diff --git a/DEPS b/DEPS
index c22fb81..55fab36 100644
--- a/DEPS
+++ b/DEPS
@@ -300,7 +300,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '0af809b0e7ceb3961adc0bb1110d0c58f825f447',
+  'skia_revision': '69f7860093b4ec7971d1e3bee458847aa849c351',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -308,7 +308,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '2ec39fd22fe94c607deb350b093421673fa1d6b8',
+  'angle_revision': '42bd78b29cb6aa037eb99d0797278939b864ef93',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -371,7 +371,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '4f43388d908cb2c5e3cf788a9018be512b6c7653',
+  'catapult_revision': 'f8c80ae9df47d699e6c81153839e26bb4ee3b8ba',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling CrossBench
   # and whatever else without interference from each other.
@@ -387,7 +387,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': 'b8427abadb0fdc9a141b64573836a17dae7651ca',
+  'devtools_frontend_revision': '23cde35228250b831d70b63ab76d05ab4d193129',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -427,7 +427,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'a3e197fba4109cdabbc2fda09a0bb519f87bdb3c',
+  'dawn_revision': '858ccc8a0c926599868d4e00417a229a1c809d75',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -447,7 +447,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libavif
   # and whatever else without interference from each other.
-  'libavif_revision': '094e6166339bc317d54b42460232c28193ea4daf',
+  'libavif_revision': '99be03b67e3690c5b0face3f7e8e2d4977099564',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling nearby
   # and whatever else without interference from each other.
@@ -808,12 +808,12 @@
 
   'src/clank': {
     'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' +
-    '4b1699a325c46130c900f9b628622bb41ae11542',
+    '5a5f5f4e7f9ef4164d883cb918ac59c851c3e650',
     'condition': 'checkout_android and checkout_src_internal',
   },
 
   'src/docs/website': {
-    'url': Var('chromium_git') + '/website.git' + '@' + '1128ca7a99b4e1520df8b82c9cabdd512cfdc6fd',
+    'url': Var('chromium_git') + '/website.git' + '@' + 'c9a465a1489131337335476365deb50a7f158cb3',
   },
 
   'src/ios/third_party/earl_grey2/src': {
@@ -837,7 +837,7 @@
   },
 
   'src/ios/third_party/material_components_ios/src': {
-      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '0c79f8bf91435d96c0a7022055f9206acc3f9174',
+      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '4ca20170cd25d0c963cc73ded2e63927defcb2e8',
       'condition': 'checkout_ios',
   },
 
@@ -1046,7 +1046,7 @@
       'packages': [
           {
                'package': 'chromium/third_party/android_build_tools/bundletool',
-               'version': 'Xt6znihJ60Ym06wn163_2B0HOt2tNsV5fVy-BpYJZcMC',
+               'version': 'LbB0aRQ3VKjRJZmc_PD0VTZ1O34_zD92rh71aOEOEcEC',
           },
       ],
       'condition': 'checkout_android',
@@ -1200,7 +1200,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '7e05dbf6aa5ac8c8bf56e8a68140e3619b1bfe92',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'c4f366a31e8b496d783ee6906ac3533738bb099c',
       'condition': 'checkout_chromeos',
   },
 
@@ -1232,13 +1232,13 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '63d20c330ba3ba5f644ade9e50b22ef3be09c1b8',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '02838e6f4e7efd4a15d6ff1567a3b4406d7f0e81',
 
   'src/third_party/devtools-frontend/src':
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
 
   'src/third_party/devtools-frontend-internal': {
-      'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + 'ba4eb2e1187d26c611c4885b7cb0cf627eb87059',
+      'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '4ae3148452ed3df7d1f7aa872c98185686904f6a',
     'condition': 'checkout_src_internal',
   },
 
@@ -1246,7 +1246,7 @@
     Var('chromium_git') + '/chromium/dom-distiller/dist.git' + '@' + '199de96b345ada7c6e7e6ba3d2fa7a6911b8767d',
 
   'src/third_party/eigen3/src':
-    Var('chromium_git') + '/external/gitlab.com/libeigen/eigen.git' + '@' + '2709f4c8fbbe71a5383de1ba27e9833f218a642d',
+    Var('chromium_git') + '/external/gitlab.com/libeigen/eigen.git' + '@' + 'c18f94e3b017104284cd541e553472e62e85e526',
 
   'src/third_party/emoji-metadata/src': {
     'url': Var('chromium_git') + '/external/github.com/googlefonts/emoji-metadata' + '@' + '045f146fca682a836e01cd265171312bfb300e06',
@@ -1694,7 +1694,7 @@
     Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '09a4f3ec842a8932341b195c5b01e141c8a16eb7',
 
   'src/third_party/openscreen/src':
-    Var('chromium_git') + '/openscreen' + '@' + 'd052a5556a78aa4463852e29919d616b47237842',
+    Var('chromium_git') + '/openscreen' + '@' + 'c47d0472ab9210a246abd94b0361d9b5b53659e3',
 
   'src/third_party/openxr/src': {
     'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '58a00cf85c39ad5ec4dc43a769624e420c06179a',
@@ -1705,7 +1705,7 @@
     Var('pdfium_git') + '/pdfium.git' + '@' +  Var('pdfium_revision'),
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '86ba039eec4889624d5c44a4ebf19b18d8df91cc',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'ab5c58d254d434ec35022ff5c8dfa437ff34ac6d',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1783,7 +1783,7 @@
   },
 
   'src/third_party/ruy/src':
-    Var('chromium_git') + '/external/github.com/google/ruy.git' + '@' + 'c19139f55a94493086561288b243eaeec9d58353',
+    Var('chromium_git') + '/external/github.com/google/ruy.git' + '@' + '72d107f88082aeca462ffbe91b3a3b0e02686a73',
 
   'src/third_party/skia':
     Var('skia_git') + '/skia.git' + '@' +  Var('skia_revision'),
@@ -1837,7 +1837,7 @@
     Var('chromium_git') + '/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git' + '@' + 'c036420683f672d685e27415de0a5f5e85bdc23f',
 
   'src/third_party/tflite/src':
-    Var('chromium_git') + '/external/github.com/tensorflow/tensorflow.git' + '@' + 'ce9330a360c4a91df22799131f5c4fd45e5f223e',
+    Var('chromium_git') + '/external/github.com/tensorflow/tensorflow.git' + '@' + 'be1a33f1566b40bd43ecfc53dbd8c3dfbc7f2aa1',
 
   'src/third_party/turbine': {
       'packages': [
@@ -1850,7 +1850,7 @@
       'dep_type': 'cipd',
   },
 
-  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@8a3971e5e9c5cddc437d1cf5e4ac1ed0728d6a49',
+  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@94574e5c2e14614aae7251f26a5492fec966abf0',
 
   'src/third_party/vulkan_memory_allocator':
     Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'ebe84bec02c041d28f902da0214bf442743fc907',
@@ -1890,7 +1890,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '9e1c8491ce514c0c65e01f5b8bec509d88fdd536',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '2eacbbc03a4a41ea658661225eb1c8fc07884c33',
+    Var('webrtc_git') + '/src.git' + '@' + '4daa4e6b2f733e18d411ab7fba16ddd3431b3ff0',
 
   # Wuffs' canonical repository is at github.com/google/wuffs, but we use
   # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file.
@@ -1980,7 +1980,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': Var('chrome_git') + '/chrome/src-internal.git@4d6e6def44e5a6c65a319c537567bb4659e2f63f',
+    'url': Var('chrome_git') + '/chrome/src-internal.git@31b311b25460fcf03f3147e69278526c78e18a22',
     'condition': 'checkout_src_internal',
   },
 
@@ -2021,7 +2021,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'bgUk_78VcVLYExlsZoi_-F-Z2YdqGCEXAqjkepE56PwC',
+        'version': 'mNd-TXITVIMNgGUojaN0yxKq8YkyCG6ftMV1IzKJcjoC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -4179,7 +4179,7 @@
 
   'src/ios_internal':  {
       'url': '{chrome_git}/chrome/ios_internal.git' + '@' +
-        '8a8d126735ea6681d302d4dcbc3f43740456db51',
+        '615fe910141aff7025226dd516e5f9fe649d5708',
       'condition': 'checkout_ios and checkout_src_internal',
   },
 
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index ff9be24..8381fd7 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -619,10 +619,10 @@
   ]
   deps = [
     ":common_aidl_java",
-    ":common_crash_java",
     ":common_java",
     ":common_platform_services_java",
     ":common_variations_java",
+    ":crash_client_java",
     ":resources",
     "//android_webview/proto:metrics_bridge_records_proto_java",
     "//base:base_java",
@@ -723,20 +723,12 @@
   deps = [ ":common_platform_services_java" ]
 }
 
-android_library("common_crash_java") {
-  sources = [
-    "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
-    "java/src/org/chromium/android_webview/common/crash/CrashInfo.java",
-    "java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java",
-    "java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java",
-  ]
+android_library("crash_client_java") {
+  sources = [ "java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java" ]
 
   deps = [
-    ":common_java",
     "//base:base_java",
     "//base:jni_java",
-    "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
-    "//components/minidump_uploader:minidump_uploader_java",
     "//third_party/androidx:androidx_annotation_annotation_java",
   ]
   annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
index 8cdf7bb..716c12b2 100644
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -1126,4 +1126,13 @@
   return false;  // WebView does not support web-only attribution.
 }
 
+bool AwContentBrowserClient::ShouldUseOsWebSourceAttributionReporting() {
+  // WebView should register sources as from the app instead of the web.
+  // Web registration APIs currently require a special registration
+  // from the app in Android for registering sources. The more common case
+  // for a webview is that the app does not have this registration,
+  // so we instead register attribution events against the embedding app.
+  return false;
+}
+
 }  // namespace android_webview
diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h
index 9c0a65c1..1b3dc44d 100644
--- a/android_webview/browser/aw_content_browser_client.h
+++ b/android_webview/browser/aw_content_browser_client.h
@@ -264,6 +264,7 @@
       const url::Origin* destination_origin,
       const url::Origin* reporting_origin) override;
   bool IsWebAttributionReportingAllowed() override;
+  bool ShouldUseOsWebSourceAttributionReporting() override;
   blink::mojom::OriginTrialsSettingsPtr GetOriginTrialsSettings() override;
 
   AwFeatureListCreator* aw_feature_list_creator() {
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
index 44085c9..81f0e37e 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -2550,6 +2550,9 @@
      */
     public void goBackOrForward(int steps) {
         if (TRACE) Log.i(TAG, "%s goBackOrForward=%d", this, steps);
+        if (!canGoBackOrForward(steps)) {
+            return;
+        }
         if (!isDestroyed(WARN)) mNavigationController.goToOffset(steps);
     }
 
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoTest.java
deleted file mode 100644
index a25fe9b..0000000
--- a/android_webview/javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.android_webview.test.common.crash;
-
-import static org.chromium.android_webview.test.OnlyRunIn.ProcessMode.SINGLE_PROCESS;
-import static org.chromium.android_webview.test.common.crash.CrashInfoEqualityMatcher.equalsTo;
-
-import androidx.test.filters.SmallTest;
-
-import org.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
-import org.chromium.android_webview.test.AwJUnit4ClassRunner;
-import org.chromium.android_webview.test.OnlyRunIn;
-import org.chromium.base.test.util.Batch;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Unit tests for CrashInfo.
- */
-@RunWith(AwJUnit4ClassRunner.class)
-@OnlyRunIn(SINGLE_PROCESS) // These are unit tests
-@Batch(Batch.UNIT_TESTS)
-public class CrashInfoTest {
-    /**
-     * Create a {@link CrashInfo} object for testing.
-     *
-     * {@code appPackageName} is used as a representative of crash keys in tests.
-     */
-    public static CrashInfo createCrashInfo(String localId, long captureTime, String uploadId,
-            long uploadTime, String appPackageName, UploadState state) {
-        Map<String, String> crashKeys = new HashMap<>();
-        if (appPackageName != null) {
-            crashKeys.put("app-package-name", appPackageName);
-        }
-        CrashInfo crashInfo = new CrashInfo(localId, crashKeys);
-        crashInfo.captureTime = captureTime;
-        crashInfo.uploadId = uploadId;
-        crashInfo.uploadTime = uploadTime;
-        crashInfo.uploadState = state;
-
-        return crashInfo;
-    }
-
-    /**
-     * Create a hidden {@link CrashInfo} object for testing.
-     *
-     * {@code appPackageName} is used as a representative of crash keys in tests.
-     */
-    public static CrashInfo createHiddenCrashInfo(String localId, long captureTime, String uploadId,
-            long uploadTime, String appPackageName, UploadState state) {
-        CrashInfo crashInfo =
-                createCrashInfo(localId, captureTime, uploadId, uploadTime, appPackageName, state);
-        crashInfo.isHidden = true;
-
-        return crashInfo;
-    }
-
-    /**
-     * Test that merging two {@code CrashInfo} objects works correctly.
-     */
-    @Test
-    @SmallTest
-    public void testMergeCrashInfo() {
-        CrashInfo a = createCrashInfo("123456", 10987654321L, null, -1, "org.test.package", null);
-        CrashInfo b =
-                createCrashInfo("123456", -1, "abcdefg", 12345678910L, null, UploadState.UPLOADED);
-
-        CrashInfo merged = new CrashInfo(a, b);
-        CrashInfo expected = createCrashInfo("123456", 10987654321L, "abcdefg", 12345678910L,
-                "org.test.package", UploadState.UPLOADED);
-        Assert.assertThat(merged, equalsTo(expected));
-    }
-
-    /**
-     * Test that merging two {@code CrashInfo} objects works correctly.
-     */
-    @Test
-    @SmallTest
-    public void testMergeCrashInfo_differentUploadStates() {
-        CrashInfo a = createCrashInfo("123456", -1, null, -1, null, UploadState.PENDING);
-        CrashInfo b = createCrashInfo("123456", -1, "abcdefg", -1, null, UploadState.UPLOADED);
-
-        CrashInfo merged = new CrashInfo(a, b);
-        CrashInfo expected =
-                createCrashInfo("123456", -1, "abcdefg", -1, null, UploadState.UPLOADED);
-        // UPLOADED state is the merge result, regardless of order.
-        Assert.assertThat(merged, equalsTo(expected));
-    }
-
-    /**
-     * Test that merging two {@code CrashInfo} objects works correctly.
-     */
-    @Test
-    @SmallTest
-    public void testMergeCrashInfo_differentCaptureTime() {
-        CrashInfo a = createCrashInfo("123456", 1234567, null, -1, null, null);
-        CrashInfo b = createCrashInfo("123456", 1234555, null, -1, null, null);
-
-        CrashInfo merged = new CrashInfo(a, b);
-        CrashInfo expected = createCrashInfo("123456", 1234555, null, -1, null, null);
-        // Older capture time is the merging result regardless of the order.
-        Assert.assertThat(merged, equalsTo(expected));
-    }
-
-    /**
-     * Test compitability with old JSON format.
-     */
-    @Test
-    @SmallTest
-    public void testSerializeToJson() throws Throwable {
-        final String jsonObjectString =
-                "{'crash-local-id':'123456abc','crash-capture-time':1234567890,"
-                + "'crash-is-hidden':false,"
-                + "'crash-keys':{'app-package-name':'org.test.package'}}";
-        JSONObject expectedJsonObject = new JSONObject(jsonObjectString);
-
-        CrashInfo c = createCrashInfo("123456abc", 1234567890, null, -1, "org.test.package", null);
-        Assert.assertEquals(c.serializeToJson(), expectedJsonObject.toString());
-    }
-
-    /**
-     * Test compitability with old JSON format.
-     */
-    @Test
-    @SmallTest
-    public void testReadFromJsonString() throws Throwable {
-        final String jsonObjectString =
-                "{'crash-local-id':'123456abc','crash-capture-time':1234567890,"
-                + "'crash-keys':{'app-package-name':'org.test.package'}}";
-
-        CrashInfo parsed = CrashInfo.readFromJsonString(jsonObjectString);
-        CrashInfo expected =
-                createCrashInfo("123456abc", 1234567890, null, -1, "org.test.package", null);
-        Assert.assertThat(parsed, equalsTo(expected));
-    }
-}
\ No newline at end of file
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/CrashesListFragmentTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/CrashesListFragmentTest.java
index fec8f2c17..943dc47 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/CrashesListFragmentTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/CrashesListFragmentTest.java
@@ -24,7 +24,7 @@
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
 
-import static org.chromium.android_webview.test.common.crash.CrashInfoTest.createCrashInfo;
+import static org.chromium.android_webview.nonembedded.crash.CrashInfo.createCrashInfoForTesting;
 import static org.chromium.android_webview.test.devui.DeveloperUiTestUtils.getClipBoardTextOnUiThread;
 import static org.chromium.android_webview.test.devui.DeveloperUiTestUtils.setClipBoardTextOnUiThread;
 import static org.chromium.android_webview.test.devui.DeveloperUiTestUtils.withCount;
@@ -63,16 +63,16 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.android_webview.common.PlatformServiceBridge;
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
-import org.chromium.android_webview.common.crash.CrashUploadUtil;
-import org.chromium.android_webview.common.crash.CrashUploadUtil.CrashUploadDelegate;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.devui.CrashesListFragment;
 import org.chromium.android_webview.devui.MainActivity;
 import org.chromium.android_webview.devui.R;
 import org.chromium.android_webview.devui.WebViewPackageError;
 import org.chromium.android_webview.devui.util.CrashBugUrlFactory;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
+import org.chromium.android_webview.nonembedded.crash.CrashUploadUtil;
+import org.chromium.android_webview.nonembedded.crash.CrashUploadUtil.CrashUploadDelegate;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.nonembedded_util.WebViewPackageHelper;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.base.Callback;
@@ -386,7 +386,7 @@
     @Feature({"AndroidWebView"})
     public void testShowingSingleCrashReport_uploaded() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo("123456", systemTime, "0abcde123456",
+        CrashInfo crashInfo = createCrashInfoForTesting("123456", systemTime, "0abcde123456",
                 systemTime + 1000, FAKE_APP_PACKAGE_NAME, UploadState.UPLOADED);
 
         assertThat("temp json log file should exist", writeJsonLogFile(crashInfo).exists());
@@ -423,7 +423,7 @@
     @Feature({"AndroidWebView"})
     public void testOpenBugReportCrash() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo("123456", systemTime, "0abcde123456",
+        CrashInfo crashInfo = createCrashInfoForTesting("123456", systemTime, "0abcde123456",
                 systemTime + 1000, FAKE_APP_PACKAGE_NAME, UploadState.UPLOADED);
 
         assertThat("temp json log file should exist", writeJsonLogFile(crashInfo).exists());
@@ -472,7 +472,7 @@
     @Feature({"AndroidWebView"})
     public void testShowingSingleCrashReport_pending() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
@@ -511,8 +511,8 @@
     @Feature({"AndroidWebView"})
     public void testShowingSingleCrashReport_pendingUserRequest() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo("123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME,
-                UploadState.PENDING_USER_REQUESTED);
+        CrashInfo crashInfo = createCrashInfoForTesting("123456", systemTime, null, -1,
+                FAKE_APP_PACKAGE_NAME, UploadState.PENDING_USER_REQUESTED);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
         assertThat("temp json log file should exist", writeJsonLogFile(crashInfo).exists());
@@ -549,7 +549,7 @@
     @Feature({"AndroidWebView"})
     public void testShowingSingleCrashReport_skipped() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.SKIPPED);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
@@ -588,7 +588,7 @@
     @Feature({"AndroidWebView"})
     public void testForceUploadSkippedCrashReport_noWifi() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.SKIPPED);
 
         File minidumpFile = createMinidumpFile(crashInfo);
@@ -654,7 +654,7 @@
     @Feature({"AndroidWebView"})
     public void testForceUploadSkippedCrashReport_withWifi() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.SKIPPED);
 
         File minidumpFile = createMinidumpFile(crashInfo);
@@ -721,7 +721,7 @@
                 "This test assumes \"com.android.settings\" package is available", appInfo);
 
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, appPackageName, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
@@ -746,8 +746,8 @@
     // Test when app package name field is missing in the crash info.
     public void testMissingPackageInfo() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo =
-                createCrashInfo("123456", systemTime, null, -1, null, UploadState.PENDING);
+        CrashInfo crashInfo = createCrashInfoForTesting(
+                "123456", systemTime, null, -1, null, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
         assertThat("temp json log file should exist", writeJsonLogFile(crashInfo).exists());
@@ -766,7 +766,8 @@
     @Feature({"AndroidWebView"})
     // Test when crash is missing json, but has upload log file and minidump.
     public void testShowingSingleCrashReport_uploaded_missingJson() throws Throwable {
-        CrashInfo crashInfo = createCrashInfo("123456", -1, null, 1000, null, UploadState.UPLOADED);
+        CrashInfo crashInfo =
+                createCrashInfoForTesting("123456", -1, null, 1000, null, UploadState.UPLOADED);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
         assertThat("upload log file should exist", appendUploadedEntryToLog(crashInfo).exists());
@@ -785,7 +786,8 @@
     @Feature({"AndroidWebView"})
     // Test when crash is missing json, but has upload log file and minidump.
     public void testShowingSingleCrashReport_pending_missingJson() throws Throwable {
-        CrashInfo crashInfo = createCrashInfo("123456", -1, null, 1000, null, UploadState.PENDING);
+        CrashInfo crashInfo =
+                createCrashInfoForTesting("123456", -1, null, 1000, null, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
 
@@ -808,8 +810,8 @@
         for (int i = 0; i < crashReportsNum; ++i) {
             // Set capture time with an arbitrary chosen 2 second difference to make sure crashes
             // are shown in descending order with most recent crash first.
-            crashInfo[i] = createCrashInfo("abcd" + Integer.toString(i), systemTime + i * 2000,
-                    null, -1, FAKE_APP_PACKAGE_NAME, UploadState.PENDING);
+            crashInfo[i] = createCrashInfoForTesting("abcd" + Integer.toString(i),
+                    systemTime + i * 2000, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.PENDING);
 
             assertThat(
                     "temp minidump file should exist", createMinidumpFile(crashInfo[i]).exists());
@@ -836,7 +838,7 @@
     @Feature({"AndroidWebView"})
     public void testHideCrashButton_uploaded() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo("123456", systemTime, "0abcde123456",
+        CrashInfo crashInfo = createCrashInfoForTesting("123456", systemTime, "0abcde123456",
                 systemTime + 1000, FAKE_APP_PACKAGE_NAME, UploadState.UPLOADED);
 
         assertThat("temp json log file should exist", writeJsonLogFile(crashInfo).exists());
@@ -867,7 +869,7 @@
     @Feature({"AndroidWebView"})
     public void testHideCrashButton_pending() throws Throwable {
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
@@ -897,7 +899,8 @@
     @Test
     @Feature({"AndroidWebView"})
     public void testHideCrashButton_uploaded_missingJson() throws Throwable {
-        CrashInfo crashInfo = createCrashInfo("123456", -1, null, 1000, null, UploadState.UPLOADED);
+        CrashInfo crashInfo =
+                createCrashInfoForTesting("123456", -1, null, 1000, null, UploadState.UPLOADED);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
         assertThat("upload log file should exist", appendUploadedEntryToLog(crashInfo).exists());
@@ -926,7 +929,8 @@
     @Test
     @Feature({"AndroidWebView"})
     public void testHideCrashButton_pending_missingJson() throws Throwable {
-        CrashInfo crashInfo = createCrashInfo("123456", -1, null, -1, null, UploadState.PENDING);
+        CrashInfo crashInfo =
+                createCrashInfoForTesting("123456", -1, null, -1, null, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
 
@@ -963,7 +967,7 @@
         onView(withId(R.id.crashes_list)).check(matches(withCount(0)));
 
         final long systemTime = System.currentTimeMillis();
-        CrashInfo crashInfo = createCrashInfo(
+        CrashInfo crashInfo = createCrashInfoForTesting(
                 "123456", systemTime, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.PENDING);
 
         assertThat("temp minidump file should exist", createMinidumpFile(crashInfo).exists());
@@ -988,9 +992,9 @@
     public void testLongPressCopy() throws Throwable {
         Context context = InstrumentationRegistry.getTargetContext();
         final long systemTime = System.currentTimeMillis();
-        CrashInfo uploadedCrashInfo = createCrashInfo("123456", systemTime - 1000, "0abcde123456",
-                systemTime, FAKE_APP_PACKAGE_NAME, UploadState.UPLOADED);
-        CrashInfo pendingCrashInfo = createCrashInfo(
+        CrashInfo uploadedCrashInfo = createCrashInfoForTesting("123456", systemTime - 1000,
+                "0abcde123456", systemTime, FAKE_APP_PACKAGE_NAME, UploadState.UPLOADED);
+        CrashInfo pendingCrashInfo = createCrashInfoForTesting(
                 "78910", systemTime - 2000, null, -1, FAKE_APP_PACKAGE_NAME, UploadState.PENDING);
 
         assertThat("temp json log file for uploaded crash should exist",
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/CrashBugUrlFactoryTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/CrashBugUrlFactoryTest.java
index d1d9076..69ff6128 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/CrashBugUrlFactoryTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/CrashBugUrlFactoryTest.java
@@ -23,8 +23,8 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
 import org.chromium.android_webview.devui.util.CrashBugUrlFactory;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.android_webview.test.OnlyRunIn;
 import org.chromium.base.test.util.Batch;
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UnuploadedFilesStateLoaderTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UnuploadedFilesStateLoaderTest.java
index 94972b4..1e3ffaa 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UnuploadedFilesStateLoaderTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UnuploadedFilesStateLoaderTest.java
@@ -15,9 +15,9 @@
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
 import org.chromium.android_webview.devui.util.UnuploadedFilesStateLoader;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.android_webview.test.OnlyRunIn;
 import org.chromium.base.test.util.Batch;
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UploadedCrashesInfoLoaderTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UploadedCrashesInfoLoaderTest.java
index 243113a..f5ca3577 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UploadedCrashesInfoLoaderTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/UploadedCrashesInfoLoaderTest.java
@@ -14,9 +14,9 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
 import org.chromium.android_webview.devui.util.UploadedCrashesInfoLoader;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.android_webview.test.OnlyRunIn;
 import org.chromium.base.test.util.Batch;
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashInfoCollectorTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashInfoCollectorTest.java
index af7c9e8a..c1fa686 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashInfoCollectorTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashInfoCollectorTest.java
@@ -8,10 +8,9 @@
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 
+import static org.chromium.android_webview.nonembedded.crash.CrashInfo.createCrashInfoForTesting;
+import static org.chromium.android_webview.nonembedded.crash.CrashInfoEqualityMatcher.equalsTo;
 import static org.chromium.android_webview.test.OnlyRunIn.ProcessMode.SINGLE_PROCESS;
-import static org.chromium.android_webview.test.common.crash.CrashInfoEqualityMatcher.equalsTo;
-import static org.chromium.android_webview.test.common.crash.CrashInfoTest.createCrashInfo;
-import static org.chromium.android_webview.test.common.crash.CrashInfoTest.createHiddenCrashInfo;
 
 import androidx.test.filters.SmallTest;
 
@@ -21,13 +20,13 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.devui.util.CrashInfoLoader;
 import org.chromium.android_webview.devui.util.WebViewCrashInfoCollector;
 import org.chromium.android_webview.devui.util.WebViewCrashInfoCollector.CrashInfoLoadersFactory;
 import org.chromium.android_webview.devui.util.WebViewCrashLogParser;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.android_webview.test.OnlyRunIn;
 import org.chromium.base.FileUtils;
@@ -70,6 +69,20 @@
         FileUtils.recursivelyDeleteFile(SystemWideCrashDirectories.getWebViewCrashLogDir(), null);
     }
 
+    /**
+     * Create a hidden {@link CrashInfo} object for testing.
+     *
+     * {@code appPackageName} is used as a representative of crash keys in tests.
+     */
+    public static CrashInfo createHiddenCrash(String localId, long captureTime, String uploadId,
+            long uploadTime, String appPackageName, UploadState state) {
+        CrashInfo crashInfo = createCrashInfoForTesting(
+                localId, captureTime, uploadId, uploadTime, appPackageName, state);
+        crashInfo.isHidden = true;
+
+        return crashInfo;
+    }
+
     private static File writeJsonLogFile(CrashInfo crashInfo) throws IOException {
         File dir = SystemWideCrashDirectories.getOrCreateWebViewCrashLogDir();
         File jsonFile = File.createTempFile(crashInfo.localId, ".json", dir);
@@ -98,24 +111,26 @@
     @Test
     @SmallTest
     public void testMergeDuplicates() {
-        List<CrashInfo> testList = Arrays.asList(
-                createCrashInfo("xyz123", 112233445566L, null, -1, null, UploadState.PENDING),
-                createCrashInfo(
+        List<CrashInfo> testList = Arrays.asList(createCrashInfoForTesting("xyz123", 112233445566L,
+                                                         null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting(
                         "def789", -1, "55667788", 123344556677L, null, UploadState.UPLOADED),
-                createCrashInfo("abc456", -1, null, -1, null, UploadState.PENDING),
-                createCrashInfo("xyz123", 112233445566L, null, -1, "com.test.package", null),
-                createCrashInfo("abc456", 445566778899L, null, -1, "org.test.package", null),
-                createCrashInfo("abc456", -1, null, -1, null, null),
-                createCrashInfo(
+                createCrashInfoForTesting("abc456", -1, null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting(
+                        "xyz123", 112233445566L, null, -1, "com.test.package", null),
+                createCrashInfoForTesting(
+                        "abc456", 445566778899L, null, -1, "org.test.package", null),
+                createCrashInfoForTesting("abc456", -1, null, -1, null, null),
+                createCrashInfoForTesting(
                         "xyz123", -1, "11223344", 223344556677L, null, UploadState.UPLOADED));
         List<CrashInfo> uniqueList = WebViewCrashInfoCollector.mergeDuplicates(testList);
         Assert.assertThat(uniqueList,
-                containsInAnyOrder(equalsTo(createCrashInfo("abc456", 445566778899L, null, -1,
-                                           "org.test.package", UploadState.PENDING)),
-                        equalsTo(createCrashInfo("xyz123", 112233445566L, "11223344", 223344556677L,
-                                "com.test.package", UploadState.UPLOADED)),
-                        equalsTo(createCrashInfo("def789", -1, "55667788", 123344556677L, null,
-                                UploadState.UPLOADED))));
+                containsInAnyOrder(equalsTo(createCrashInfoForTesting("abc456", 445566778899L, null,
+                                           -1, "org.test.package", UploadState.PENDING)),
+                        equalsTo(createCrashInfoForTesting("xyz123", 112233445566L, "11223344",
+                                223344556677L, "com.test.package", UploadState.UPLOADED)),
+                        equalsTo(createCrashInfoForTesting("def789", -1, "55667788", 123344556677L,
+                                null, UploadState.UPLOADED))));
     }
 
     /**
@@ -125,18 +140,20 @@
     @SmallTest
     public void testMergeDuplicatesAndIgnoreHidden() {
         List<CrashInfo> testList = Arrays.asList(
-                createHiddenCrashInfo("xyz123", 112233445566L, null, -1, null, UploadState.PENDING),
-                createCrashInfo(
+                createHiddenCrash("xyz123", 112233445566L, null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting(
                         "def789", -1, "55667788", 123344556677L, null, UploadState.UPLOADED),
-                createHiddenCrashInfo("abc456", -1, null, -1, null, UploadState.PENDING),
-                createCrashInfo("xyz123", 112233445566L, null, -1, "com.test.package", null),
-                createCrashInfo("abc456", 445566778899L, null, -1, "org.test.package", null),
-                createCrashInfo("abc456", -1, null, -1, null, null),
-                createCrashInfo(
+                createHiddenCrash("abc456", -1, null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting(
+                        "xyz123", 112233445566L, null, -1, "com.test.package", null),
+                createCrashInfoForTesting(
+                        "abc456", 445566778899L, null, -1, "org.test.package", null),
+                createCrashInfoForTesting("abc456", -1, null, -1, null, null),
+                createCrashInfoForTesting(
                         "xyz123", -1, "11223344", 223344556677L, null, UploadState.UPLOADED));
         List<CrashInfo> uniqueList = WebViewCrashInfoCollector.mergeDuplicates(testList);
         Assert.assertThat(uniqueList,
-                containsInAnyOrder(equalsTo(createCrashInfo(
+                containsInAnyOrder(equalsTo(createCrashInfoForTesting(
                         "def789", -1, "55667788", 123344556677L, null, UploadState.UPLOADED))));
     }
 
@@ -147,28 +164,29 @@
     @Test
     @SmallTest
     public void testSortByRecentCaptureTime() {
-        List<CrashInfo> testList = Arrays.asList(
-                createCrashInfo("xyz123", -1, "11223344", 123L, null, UploadState.UPLOADED),
-                createCrashInfo("def789", 111L, "55667788", 100L, null, UploadState.UPLOADED),
-                createCrashInfo("abc456", -1, null, -1, null, UploadState.PENDING),
-                createCrashInfo("ghijkl", 112L, null, -1, "com.test.package", null),
-                createCrashInfo("abc456", 112L, null, 112L, "org.test.package", null),
-                createCrashInfo(null, 100, "11223344", -1, "com.test.package", null),
-                createCrashInfo("abc123", 100, null, -1, null, null));
+        List<CrashInfo> testList = Arrays.asList(createCrashInfoForTesting("xyz123", -1, "11223344",
+                                                         123L, null, UploadState.UPLOADED),
+                createCrashInfoForTesting(
+                        "def789", 111L, "55667788", 100L, null, UploadState.UPLOADED),
+                createCrashInfoForTesting("abc456", -1, null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting("ghijkl", 112L, null, -1, "com.test.package", null),
+                createCrashInfoForTesting("abc456", 112L, null, 112L, "org.test.package", null),
+                createCrashInfoForTesting(null, 100, "11223344", -1, "com.test.package", null),
+                createCrashInfoForTesting("abc123", 100, null, -1, null, null));
         WebViewCrashInfoCollector.sortByMostRecent(testList);
         Assert.assertThat(testList,
-                contains(equalsTo(createCrashInfo(
+                contains(equalsTo(createCrashInfoForTesting(
                                  "abc456", 112L, null, 112L, "org.test.package", null)),
-                        equalsTo(createCrashInfo(
+                        equalsTo(createCrashInfoForTesting(
                                 "ghijkl", 112L, null, -1, "com.test.package", null)),
-                        equalsTo(createCrashInfo(
+                        equalsTo(createCrashInfoForTesting(
                                 "def789", 111L, "55667788", 100L, null, UploadState.UPLOADED)),
-                        equalsTo(createCrashInfo(
+                        equalsTo(createCrashInfoForTesting(
                                 null, 100, "11223344", -1, "com.test.package", null)),
-                        equalsTo(createCrashInfo("abc123", 100, null, -1, null, null)),
-                        equalsTo(createCrashInfo(
+                        equalsTo(createCrashInfoForTesting("abc123", 100, null, -1, null, null)),
+                        equalsTo(createCrashInfoForTesting(
                                 "xyz123", -1, "11223344", 123L, null, UploadState.UPLOADED)),
-                        equalsTo(createCrashInfo(
+                        equalsTo(createCrashInfoForTesting(
                                 "abc456", -1, null, -1, null, UploadState.PENDING))));
     }
 
@@ -178,15 +196,17 @@
     @Test
     @SmallTest
     public void testLoadCrashesInfoFilteredNoLimit() {
-        List<CrashInfo> testList = Arrays.asList(
-                createCrashInfo("xyz123", 112233445566L, null, -1, null, UploadState.PENDING),
-                createCrashInfo(
+        List<CrashInfo> testList = Arrays.asList(createCrashInfoForTesting("xyz123", 112233445566L,
+                                                         null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting(
                         "def789", -1, "55667788", 123344556677L, null, UploadState.UPLOADED),
-                createCrashInfo("abc456", -1, null, -1, null, UploadState.PENDING),
-                createCrashInfo("xyz123", 112233445566L, null, -1, "com.test.package", null),
-                createCrashInfo("abc456", 445566778899L, null, -1, "org.test.package", null),
-                createCrashInfo("abc456", -1, null, -1, null, null),
-                createCrashInfo(
+                createCrashInfoForTesting("abc456", -1, null, -1, null, UploadState.PENDING),
+                createCrashInfoForTesting(
+                        "xyz123", 112233445566L, null, -1, "com.test.package", null),
+                createCrashInfoForTesting(
+                        "abc456", 445566778899L, null, -1, "org.test.package", null),
+                createCrashInfoForTesting("abc456", -1, null, -1, null, null),
+                createCrashInfoForTesting(
                         "xyz123", -1, "11223344", 223344556677L, null, UploadState.UPLOADED));
 
         WebViewCrashInfoCollector collector =
@@ -196,10 +216,10 @@
         List<CrashInfo> result =
                 collector.loadCrashesInfo(c -> c.uploadState == UploadState.UPLOADED);
         Assert.assertThat(result,
-                contains(equalsTo(createCrashInfo("xyz123", 112233445566L, "11223344",
+                contains(equalsTo(createCrashInfoForTesting("xyz123", 112233445566L, "11223344",
                                  223344556677L, "com.test.package", UploadState.UPLOADED)),
-                        equalsTo(createCrashInfo("def789", -1, "55667788", 123344556677L, null,
-                                UploadState.UPLOADED))));
+                        equalsTo(createCrashInfoForTesting("def789", -1, "55667788", 123344556677L,
+                                null, UploadState.UPLOADED))));
     }
 
     /**
@@ -208,11 +228,12 @@
     @Test
     @SmallTest
     public void testUpdateCrashLogFileWithNewCrashInfo() throws Throwable {
-        CrashInfo oldCrashInfo = createCrashInfo("xyz123", 112233445566L, null, -1, null, null);
+        CrashInfo oldCrashInfo =
+                createCrashInfoForTesting("xyz123", 112233445566L, null, -1, null, null);
         assertThat("temp json log file should exist", writeJsonLogFile(oldCrashInfo).exists());
 
         CrashInfo newCrashInfo =
-                createHiddenCrashInfo("xyz123", 112233445566L, null, -1, "com.test.package", null);
+                createHiddenCrash("xyz123", 112233445566L, null, -1, "com.test.package", null);
         WebViewCrashInfoCollector.updateCrashLogFileWithNewCrashInfo(newCrashInfo);
 
         CrashInfo resultCrashInfo = getCrashFromJsonLogFile("xyz123");
@@ -226,7 +247,7 @@
     @SmallTest
     public void testUpdateNonExistingCrashLogFileWithNewCrashInfo() throws Throwable {
         CrashInfo newCrashInfo =
-                createHiddenCrashInfo("xyz123", 112233445566L, null, -1, "com.test.package", null);
+                createHiddenCrash("xyz123", 112233445566L, null, -1, "com.test.package", null);
         WebViewCrashInfoCollector.updateCrashLogFileWithNewCrashInfo(newCrashInfo);
 
         CrashInfo resultCrashInfo = getCrashFromJsonLogFile("xyz123");
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashLogParserTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashLogParserTest.java
index 19ce771..b9c2e3d 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashLogParserTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashLogParserTest.java
@@ -17,8 +17,8 @@
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
 import org.chromium.android_webview.devui.util.WebViewCrashLogParser;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.android_webview.test.OnlyRunIn;
 
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashLoggingUtilsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashLoggingUtilsTest.java
index d0c17438..e8eed28 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashLoggingUtilsTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashLoggingUtilsTest.java
@@ -13,7 +13,7 @@
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 import org.chromium.android_webview.services.CrashLoggingUtils;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.base.test.util.Batch;
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java
index cd3a417..11d22c8 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java
@@ -14,7 +14,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.services.CrashReceiverService;
 import org.chromium.android_webview.test.AwJUnit4ClassRunner;
 import org.chromium.android_webview.test.OnlyRunIn;
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/services/MinidumpUploadJobTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/services/MinidumpUploadJobTest.java
index 58932bf..9d1745cf 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/services/MinidumpUploadJobTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/services/MinidumpUploadJobTest.java
@@ -18,7 +18,7 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.android_webview.common.PlatformServiceBridge;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.services.AwMinidumpUploaderDelegate;
 import org.chromium.android_webview.services.AwMinidumpUploaderDelegate.SamplingDelegate;
 import org.chromium.android_webview.services.CrashReceiverService;
diff --git a/android_webview/junit/src/org/chromium/android_webview/robolectric/nonembedded/crash/CrashInfoTest.java b/android_webview/junit/src/org/chromium/android_webview/robolectric/nonembedded/crash/CrashInfoTest.java
new file mode 100644
index 0000000..1b87669
--- /dev/null
+++ b/android_webview/junit/src/org/chromium/android_webview/robolectric/nonembedded/crash/CrashInfoTest.java
@@ -0,0 +1,107 @@
+// Copyright 2020 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.android_webview.robolectric.nonembedded.crash;
+
+import static org.chromium.android_webview.nonembedded.crash.CrashInfo.createCrashInfoForTesting;
+import static org.chromium.android_webview.nonembedded.crash.CrashInfoEqualityMatcher.equalsTo;
+
+import androidx.test.filters.SmallTest;
+
+import org.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+
+/**
+ * Unit tests for CrashInfo.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+public class CrashInfoTest {
+    /**
+     * Test that merging two {@code CrashInfo} objects works correctly.
+     */
+    @Test
+    @SmallTest
+    public void testMergeCrashInfo() {
+        CrashInfo a = createCrashInfoForTesting(
+                "123456", 10987654321L, null, -1, "org.test.package", null);
+        CrashInfo b = createCrashInfoForTesting(
+                "123456", -1, "abcdefg", 12345678910L, null, UploadState.UPLOADED);
+
+        CrashInfo merged = new CrashInfo(a, b);
+        CrashInfo expected = createCrashInfoForTesting("123456", 10987654321L, "abcdefg",
+                12345678910L, "org.test.package", UploadState.UPLOADED);
+        Assert.assertThat(merged, equalsTo(expected));
+    }
+
+    /**
+     * Test that merging two {@code CrashInfo} objects works correctly.
+     */
+    @Test
+    @SmallTest
+    public void testMergeCrashInfo_differentUploadStates() {
+        CrashInfo a = createCrashInfoForTesting("123456", -1, null, -1, null, UploadState.PENDING);
+        CrashInfo b =
+                createCrashInfoForTesting("123456", -1, "abcdefg", -1, null, UploadState.UPLOADED);
+
+        CrashInfo merged = new CrashInfo(a, b);
+        CrashInfo expected =
+                createCrashInfoForTesting("123456", -1, "abcdefg", -1, null, UploadState.UPLOADED);
+        // UPLOADED state is the merge result, regardless of order.
+        Assert.assertThat(merged, equalsTo(expected));
+    }
+
+    /**
+     * Test that merging two {@code CrashInfo} objects works correctly.
+     */
+    @Test
+    @SmallTest
+    public void testMergeCrashInfo_differentCaptureTime() {
+        CrashInfo a = createCrashInfoForTesting("123456", 1234567, null, -1, null, null);
+        CrashInfo b = createCrashInfoForTesting("123456", 1234555, null, -1, null, null);
+
+        CrashInfo merged = new CrashInfo(a, b);
+        CrashInfo expected = createCrashInfoForTesting("123456", 1234555, null, -1, null, null);
+        // Older capture time is the merging result regardless of the order.
+        Assert.assertThat(merged, equalsTo(expected));
+    }
+
+    /**
+     * Test compatibility with old JSON format.
+     */
+    @Test
+    @SmallTest
+    public void testSerializeToJson() throws Throwable {
+        final String jsonObjectString =
+                "{'crash-local-id':'123456abc','crash-capture-time':1234567890,"
+                + "'crash-is-hidden':false,"
+                + "'crash-keys':{'app-package-name':'org.test.package'}}";
+        JSONObject expectedJsonObject = new JSONObject(jsonObjectString);
+
+        CrashInfo c = createCrashInfoForTesting(
+                "123456abc", 1234567890, null, -1, "org.test.package", null);
+        Assert.assertEquals(c.serializeToJson(), expectedJsonObject.toString());
+    }
+
+    /**
+     * Test compatibility with old JSON format.
+     */
+    @Test
+    @SmallTest
+    public void testReadFromJsonString() throws Throwable {
+        final String jsonObjectString =
+                "{'crash-local-id':'123456abc','crash-capture-time':1234567890,"
+                + "'crash-keys':{'app-package-name':'org.test.package'}}";
+
+        CrashInfo parsed = CrashInfo.readFromJsonString(jsonObjectString);
+        CrashInfo expected = createCrashInfoForTesting(
+                "123456abc", 1234567890, null, -1, "org.test.package", null);
+        Assert.assertThat(parsed, equalsTo(expected));
+    }
+}
diff --git a/android_webview/nonembedded/BUILD.gn b/android_webview/nonembedded/BUILD.gn
index 1f5cd97..2005085 100644
--- a/android_webview/nonembedded/BUILD.gn
+++ b/android_webview/nonembedded/BUILD.gn
@@ -26,12 +26,12 @@
     "java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java",
   ]
   deps = [
+    ":crash_java",
     ":devui_java",
     ":services_java",
     ":util_java",
     "//android_webview:android_webview_product_config_java",
     "//android_webview:common_aidl_java",
-    "//android_webview:common_crash_java",
     "//android_webview:common_java",
     "//android_webview:common_platform_services_java",
     "//android_webview/glue:glue_java",
@@ -75,11 +75,11 @@
     "java/src/org/chromium/android_webview/devui/util/WebViewCrashLogParser.java",
   ]
   deps = [
+    ":crash_java",
     ":devui_resources",
     ":services_java",
     ":util_java",
     "//android_webview:common_aidl_java",
-    "//android_webview:common_crash_java",
     "//android_webview:common_java",
     "//android_webview:common_platform_services_java",
     "//base:base_java",
@@ -124,9 +124,9 @@
     "java/src/org/chromium/android_webview/services/VariationsSeedServer.java",
   ]
   deps = [
+    ":crash_java",
     ":devui_resources",
     "//android_webview:common_aidl_java",
-    "//android_webview:common_crash_java",
     "//android_webview:common_java",
     "//android_webview:common_platform_services_java",
     "//android_webview:common_variations_java",
@@ -150,6 +150,21 @@
   deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
 }
 
+android_library("crash_java") {
+  sources = [
+    "java/src/org/chromium/android_webview/nonembedded/crash/CrashInfo.java",
+    "java/src/org/chromium/android_webview/nonembedded/crash/CrashUploadUtil.java",
+    "java/src/org/chromium/android_webview/nonembedded/crash/SystemWideCrashDirectories.java",
+  ]
+  deps = [
+    "//android_webview:common_java",
+    "//base:base_java",
+    "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
+    "//components/minidump_uploader:minidump_uploader_java",
+    "//third_party/androidx:androidx_annotation_annotation_java",
+  ]
+}
+
 source_set("nonembedded") {
   sources = [
     "component_updater/aw_component_installer_policy.cc",
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/CrashesListFragment.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/CrashesListFragment.java
index 59382aa..c39e59a0 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/CrashesListFragment.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/CrashesListFragment.java
@@ -36,12 +36,12 @@
 
 import org.chromium.android_webview.common.DeveloperModeUtils;
 import org.chromium.android_webview.common.PlatformServiceBridge;
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
-import org.chromium.android_webview.common.crash.CrashUploadUtil;
 import org.chromium.android_webview.devui.util.CrashBugUrlFactory;
 import org.chromium.android_webview.devui.util.SafeIntentUtils;
 import org.chromium.android_webview.devui.util.WebViewCrashInfoCollector;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
+import org.chromium.android_webview.nonembedded.crash.CrashUploadUtil;
 import org.chromium.base.BaseSwitches;
 import org.chromium.base.CommandLine;
 import org.chromium.base.Log;
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java
index 95e6c5a..4a1ca36 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java
@@ -11,7 +11,7 @@
 
 import androidx.annotation.VisibleForTesting;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 import org.chromium.android_webview.nonembedded_util.WebViewPackageHelper;
 import org.chromium.base.ContextUtils;
 
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashInfoLoader.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashInfoLoader.java
index 6245a12..19264fd 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashInfoLoader.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashInfoLoader.java
@@ -4,7 +4,7 @@
 
 package org.chromium.android_webview.devui.util;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 
 import java.util.List;
 
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UnuploadedFilesStateLoader.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UnuploadedFilesStateLoader.java
index 0fedadb..686d5af 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UnuploadedFilesStateLoader.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UnuploadedFilesStateLoader.java
@@ -4,8 +4,8 @@
 
 package org.chromium.android_webview.devui.util;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.CrashInfo.UploadState;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo.UploadState;
 import org.chromium.components.minidump_uploader.CrashFileManager;
 
 import java.io.File;
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UploadedCrashesInfoLoader.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UploadedCrashesInfoLoader.java
index 7de96c53..2454be4 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UploadedCrashesInfoLoader.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/UploadedCrashesInfoLoader.java
@@ -4,7 +4,7 @@
 
 package org.chromium.android_webview.devui.util;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 
 import java.io.BufferedReader;
 import java.io.File;
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashInfoCollector.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashInfoCollector.java
index dd1fb95..77e0686 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashInfoCollector.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashInfoCollector.java
@@ -6,8 +6,8 @@
 
 import androidx.annotation.VisibleForTesting;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.base.Log;
 import org.chromium.components.minidump_uploader.CrashFileManager;
 
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashLogParser.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashLogParser.java
index df700184..a98a6c2 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashLogParser.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/WebViewCrashLogParser.java
@@ -8,7 +8,7 @@
 
 import org.json.JSONException;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 import org.chromium.base.Log;
 
 import java.io.File;
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwPureJavaExceptionReporter.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwPureJavaExceptionReporter.java
index ff01d7c..3680bd3 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwPureJavaExceptionReporter.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwPureJavaExceptionReporter.java
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 package org.chromium.android_webview.nonembedded;
 
-import org.chromium.android_webview.common.crash.CrashUploadUtil;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
+import org.chromium.android_webview.nonembedded.crash.CrashUploadUtil;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.services.CrashLoggingUtils;
 import org.chromium.base.ContextUtils;
 import org.chromium.components.crash.PureJavaExceptionReporter;
diff --git a/android_webview/java/src/org/chromium/android_webview/common/crash/CrashInfo.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfo.java
similarity index 90%
rename from android_webview/java/src/org/chromium/android_webview/common/crash/CrashInfo.java
rename to android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfo.java
index 2ea6f4dca..ed08a45 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/crash/CrashInfo.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfo.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.android_webview.common.crash;
+package org.chromium.android_webview.nonembedded.crash;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -136,6 +136,26 @@
     }
 
     /**
+     * Create a {@link CrashInfo} object for testing.
+     *
+     * {@code appPackageName} is used as a representative of crash keys in tests.
+     */
+    public static CrashInfo createCrashInfoForTesting(String localId, long captureTime,
+            String uploadId, long uploadTime, String appPackageName, UploadState state) {
+        Map<String, String> crashKeys = new HashMap<>();
+        if (appPackageName != null) {
+            crashKeys.put("app-package-name", appPackageName);
+        }
+        CrashInfo crashInfo = new CrashInfo(localId, crashKeys);
+        crashInfo.captureTime = captureTime;
+        crashInfo.uploadId = uploadId;
+        crashInfo.uploadTime = uploadTime;
+        crashInfo.uploadState = state;
+
+        return crashInfo;
+    }
+
+    /**
      * Return the string value of the given crash key extracted from the crash minidump report.
      *
      * @return the string value of the given crash key or {@code null} if not found.
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoEqualityMatcher.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfoEqualityMatcher.java
similarity index 96%
rename from android_webview/javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoEqualityMatcher.java
rename to android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfoEqualityMatcher.java
index 2a3cd3c..e76d8fe 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoEqualityMatcher.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfoEqualityMatcher.java
@@ -2,13 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.android_webview.test.common.crash;
+package org.chromium.android_webview.nonembedded.crash;
 
 import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
-
 import java.util.Locale;
 import java.util.Objects;
 
diff --git a/android_webview/java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashUploadUtil.java
similarity index 98%
rename from android_webview/java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java
rename to android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashUploadUtil.java
index a6310aa..93ac4e7 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashUploadUtil.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.android_webview.common.crash;
+package org.chromium.android_webview.nonembedded.crash;
 
 import android.app.job.JobInfo;
 import android.content.ComponentName;
diff --git a/android_webview/java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/SystemWideCrashDirectories.java
similarity index 97%
rename from android_webview/java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java
rename to android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/SystemWideCrashDirectories.java
index 004a474..c0156c5 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/SystemWideCrashDirectories.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.android_webview.common.crash;
+package org.chromium.android_webview.nonembedded.crash;
 
 import org.chromium.base.ContextUtils;
 
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwMinidumpUploaderDelegate.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwMinidumpUploaderDelegate.java
index 981cb96..ddbf229 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwMinidumpUploaderDelegate.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/AwMinidumpUploaderDelegate.java
@@ -10,7 +10,7 @@
 import androidx.annotation.VisibleForTesting;
 
 import org.chromium.android_webview.common.PlatformServiceBridge;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.base.BaseSwitches;
 import org.chromium.base.CommandLine;
 import org.chromium.base.ContextUtils;
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashLoggingUtils.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashLoggingUtils.java
index 9ecfb2d..1fad028f 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashLoggingUtils.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashLoggingUtils.java
@@ -4,7 +4,7 @@
 
 package org.chromium.android_webview.services;
 
-import org.chromium.android_webview.common.crash.CrashInfo;
+import org.chromium.android_webview.nonembedded.crash.CrashInfo;
 import org.chromium.base.Log;
 import org.chromium.components.minidump_uploader.CrashFileManager;
 
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashReceiverService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashReceiverService.java
index 9e02b4fe..116fb80 100644
--- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashReceiverService.java
+++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/CrashReceiverService.java
@@ -12,9 +12,9 @@
 
 import androidx.annotation.VisibleForTesting;
 
-import org.chromium.android_webview.common.crash.CrashUploadUtil;
-import org.chromium.android_webview.common.crash.SystemWideCrashDirectories;
 import org.chromium.android_webview.common.services.ICrashReceiverService;
+import org.chromium.android_webview.nonembedded.crash.CrashUploadUtil;
+import org.chromium.android_webview.nonembedded.crash.SystemWideCrashDirectories;
 import org.chromium.base.Log;
 import org.chromium.components.minidump_uploader.CrashFileManager;
 
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn
index f9959c0..eb189b8 100644
--- a/android_webview/test/BUILD.gn
+++ b/android_webview/test/BUILD.gn
@@ -241,13 +241,15 @@
   android_manifest = "../javatests/AndroidManifest.xml"
 
   deps = [
+    ":crash_test_utils_java",
     ":webview_instrumentation_test_mock_services_java",
     ":webview_instrumentation_test_utils_java",
     "//android_webview:android_webview_java",
     "//android_webview:common_aidl_java",
-    "//android_webview:common_crash_java",
     "//android_webview:common_platform_services_java",
     "//android_webview:common_variations_java",
+    "//android_webview:crash_client_java",
+    "//android_webview/nonembedded:crash_java",
     "//android_webview/nonembedded:devui_java",
     "//android_webview/nonembedded:services_java",
     "//android_webview/nonembedded:util_java",
@@ -307,7 +309,8 @@
     "//third_party/androidx_javascriptengine:javascriptengine_java",
     "//third_party/blink/public/mojom:mojom_platform_java",
     "//third_party/blink/public/mojom:web_feature_mojo_bindings_java",
-    "//third_party/hamcrest:hamcrest_java",
+    "//third_party/hamcrest:hamcrest_core_java",
+    "//third_party/hamcrest:hamcrest_library_java",
     "//third_party/junit",
     "//third_party/metrics_proto:metrics_proto_java",
     "//third_party/mockito:mockito_java",
@@ -428,8 +431,6 @@
     "../javatests/src/org/chromium/android_webview/test/WebViewFindApisTestRule.java",
     "../javatests/src/org/chromium/android_webview/test/WebViewModalDialogOverrideTest.java",
     "../javatests/src/org/chromium/android_webview/test/XRWOriginTrialTest.java",
-    "../javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoEqualityMatcher.java",
-    "../javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoTest.java",
     "../javatests/src/org/chromium/android_webview/test/common/services/ServiceConnectionDelayRecorderTest.java",
     "../javatests/src/org/chromium/android_webview/test/common/variations/VariationsUtilsTest.java",
     "../javatests/src/org/chromium/android_webview/test/component_updater/EmbeddedComponentLoaderTest.java",
@@ -683,6 +684,15 @@
   sources = [ "../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java" ]
 }
 
+android_library("crash_test_utils_java") {
+  testonly = true
+  sources = [ "../nonembedded/java/src/org/chromium/android_webview/nonembedded/crash/CrashInfoEqualityMatcher.java" ]
+  deps = [
+    "//android_webview/nonembedded:crash_java",
+    "//third_party/hamcrest:hamcrest_java",
+  ]
+}
+
 # robolectric tests
 robolectric_binary("android_webview_junit_tests") {
   sources = [
@@ -703,10 +713,13 @@
     "../junit/src/org/chromium/android_webview/robolectric/metrics/AwSiteVisitLoggerTest.java",
     "../junit/src/org/chromium/android_webview/robolectric/nonembedded/AwComponentUpdateServiceSafeModeTest.java",
     "../junit/src/org/chromium/android_webview/robolectric/nonembedded/NetworkFetcherTaskTest.java",
+    "../junit/src/org/chromium/android_webview/robolectric/nonembedded/crash/CrashInfoTest.java",
   ]
 
   deps = [
+    ":crash_test_utils_java",
     "//android_webview:android_webview_java",
+    "//android_webview/nonembedded:crash_java",
     "//android_webview/nonembedded:services_java",
     "//android_webview/proto:metrics_bridge_records_proto_java",
     "//base:base_java",
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 266ef71..ab705b416 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1167,8 +1167,6 @@
     "style/style_viewer/typography_instances_grid_view_factory.cc",
     "style/switch.cc",
     "style/switch.h",
-    "style/system_dialog.cc",
-    "style/system_dialog.h",
     "style/system_dialog_delegate_view.cc",
     "style/system_dialog_delegate_view.h",
     "style/system_shadow.cc",
@@ -4158,6 +4156,8 @@
     "wm/desks/templates/saved_desk_test_helper.h",
     "wm/desks/templates/saved_desk_test_util.cc",
     "wm/desks/templates/saved_desk_test_util.h",
+    "wm/float/float_test_api.cc",
+    "wm/float/float_test_api.h",
     "wm/gestures/back_gesture/test_back_gesture_contextual_nudge_delegate.cc",
     "wm/gestures/back_gesture/test_back_gesture_contextual_nudge_delegate.h",
     "wm/lock_state_controller_test_api.cc",
diff --git a/ash/accelerators/accelerator_alias_converter.cc b/ash/accelerators/accelerator_alias_converter.cc
index 119e0639..b8752b0 100644
--- a/ash/accelerators/accelerator_alias_converter.cc
+++ b/ash/accelerators/accelerator_alias_converter.cc
@@ -127,6 +127,7 @@
     case ui::TopRowActionKey::kKeyboardBacklightToggle:
     case ui::TopRowActionKey::kKeyboardBacklightDown:
     case ui::TopRowActionKey::kKeyboardBacklightUp:
+    case ui::TopRowActionKey::kPrivacyScreenToggle:
     case ui::TopRowActionKey::kAllApplications:
     case ui::TopRowActionKey::kDictation:
       return false;
@@ -463,9 +464,12 @@
   }
 
   for (const auto& accelerator : accelerators) {
+    // TODO(dpad): Handle privacy screen correctly. This can be simplified once
+    // drallion devices are properly handled in `KeyboardCapability`.
     if (auto action_key = ui::KeyboardCapability::ConvertToTopRowActionKey(
             accelerator.key_code());
-        action_key.has_value()) {
+        action_key.has_value() &&
+        action_key != ui::TopRowActionKey::kPrivacyScreenToggle) {
       // Accelerator should only be seen if the priority or internal keyboard
       // have the key OR if there is an external keyboard and the `action_key`
       // should always been shown when there is an external keyboard.
diff --git a/ash/app_list/views/search_box_view.cc b/ash/app_list/views/search_box_view.cc
index ba3df35..75dbd1e 100644
--- a/ash/app_list/views/search_box_view.cc
+++ b/ash/app_list/views/search_box_view.cc
@@ -94,10 +94,11 @@
 
 // The default PlaceholderTextTypes used for productivity launcher. Randomly
 // selected when placeholder text would be shown.
-constexpr SearchBoxView::PlaceholderTextType kDefaultPlaceholders[3] = {
+constexpr SearchBoxView::PlaceholderTextType kDefaultPlaceholders[] = {
     SearchBoxView::PlaceholderTextType::kShortcuts,
     SearchBoxView::PlaceholderTextType::kTabs,
     SearchBoxView::PlaceholderTextType::kSettings,
+    SearchBoxView::PlaceholderTextType::kImages,
 };
 
 // PlaceholderTextTypes used for productivity launcher for cloud gaming devices.
@@ -937,6 +938,15 @@
           a11y_name_template, l10n_util::GetStringUTF16(
                                   IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_GAMES)));
       break;
+    case PlaceholderTextType::kImages:
+      search_box()->SetPlaceholderText(l10n_util::GetStringFUTF16(
+          IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_TEMPLATE,
+          l10n_util::GetStringUTF16(
+              IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES)));
+      search_box()->SetAccessibleName(l10n_util::GetStringFUTF16(
+          a11y_name_template, l10n_util::GetStringUTF16(
+                                  IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES)));
+      break;
   }
 }
 
diff --git a/ash/app_list/views/search_box_view.h b/ash/app_list/views/search_box_view.h
index ef219f5a..78da5b8 100644
--- a/ash/app_list/views/search_box_view.h
+++ b/ash/app_list/views/search_box_view.h
@@ -48,7 +48,8 @@
     kShortcuts = 0,
     kTabs = 1,
     kSettings = 2,
-    kGames = 3
+    kGames = 3,
+    kImages = 4
   };
 
   SearchBoxView(SearchBoxViewDelegate* delegate,
diff --git a/ash/app_list/views/search_box_view_unittest.cc b/ash/app_list/views/search_box_view_unittest.cc
index 7fe44097..8500f06 100644
--- a/ash/app_list/views/search_box_view_unittest.cc
+++ b/ash/app_list/views/search_box_view_unittest.cc
@@ -73,7 +73,11 @@
               IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_SETTINGS)),
       l10n_util::GetStringFUTF16(
           IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_TEMPLATE_ACCESSIBILITY_NAME_CLAMSHELL,
-          l10n_util::GetStringUTF16(IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_TABS))};
+          l10n_util::GetStringUTF16(IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_TABS)),
+      l10n_util::GetStringFUTF16(
+          IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_TEMPLATE_ACCESSIBILITY_NAME_CLAMSHELL,
+          l10n_util::GetStringUTF16(
+              IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES))};
   // Check if the current accessibility text is one of the possible
   // options.
   return base::Contains(possible_a11y_text, hint);
diff --git a/ash/ash_prefs.cc b/ash/ash_prefs.cc
index 839beaa..b94b6c5 100644
--- a/ash/ash_prefs.cc
+++ b/ash/ash_prefs.cc
@@ -156,7 +156,8 @@
                                  std::string());
     registry->RegisterStringPref(language::prefs::kPreferredLanguages,
                                  std::string());
-    registry->RegisterBooleanPref(prefs::kEventRemappedToRightClick, false);
+    registry->RegisterIntegerPref(prefs::kAltEventRemappedToRightClick, 0);
+    registry->RegisterIntegerPref(prefs::kSearchEventRemappedToRightClick, 0);
     registry->RegisterIntegerPref(prefs::kKeyEventRemappedToSixPackDelete, 0);
     registry->RegisterIntegerPref(prefs::kKeyEventRemappedToSixPackEnd, 0);
     registry->RegisterIntegerPref(prefs::kKeyEventRemappedToSixPackHome, 0);
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index d7233e3..9f37399 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -5571,6 +5571,9 @@
       <message name="IDS_ASH_SCREEN_CAPTURE_SAVE_TO_DIALOG_TITLE" desc="The title of the folder selection dialog, where users can select a location to save their captured images and screen recordings.">
         Select a folder to save to
       </message>
+      <message name="IDS_ASH_SCREEN_CAPTURE_SHARE_TO_YOUTUBE" desc="The share to YouTube button label for the screen capture notification.">
+        Share to YouTube
+      </message>
       <message name="IDS_ASH_SCREEN_CAPTURE_SHOW_CAMERA_USER_NUDGE" desc="The message shown in a toast widget to nudge the user and alert them to check out the new settings that allow them to show camera during video recording.">
         You can now record yourself and your screen at the same time
       </message>
@@ -6393,6 +6396,9 @@
       <message name="IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_GAMES" desc="One of possible rotating providers listed in the placeholder text for the search box shown within the ChromeOS launcher. The provider is injected into string 'Search your $1, files, apps, and more...'">
         games
       </message>
+      <message name="IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES" desc="One of possible rotating providers listed in the placeholder text for the search box shown within the ChromeOS launcher. The provider is injected into string 'Search your $1, files, apps, and more...'">
+        images
+      </message>
 
       <!-- WM -->
       <message name="IDS_ENTER_PIP_A11Y_NOTIFICATION" is_accessibility_with_no_ui="true" desc="Accessibility text read by chromevox when a window starts picture-in-picture mode.">
diff --git a/ash/ash_strings_grd/IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES.png.sha1 b/ash/ash_strings_grd/IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES.png.sha1
new file mode 100644
index 0000000..b17e8532
--- /dev/null
+++ b/ash/ash_strings_grd/IDS_APP_LIST_SEARCH_BOX_PLACEHOLDER_IMAGES.png.sha1
@@ -0,0 +1 @@
+c9674d58ab8ccd8a35bf461645590d2ea317da9e
\ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_SCREEN_CAPTURE_SHARE_TO_YOUTUBE.png.sha1 b/ash/ash_strings_grd/IDS_ASH_SCREEN_CAPTURE_SHARE_TO_YOUTUBE.png.sha1
new file mode 100644
index 0000000..8914095
--- /dev/null
+++ b/ash/ash_strings_grd/IDS_ASH_SCREEN_CAPTURE_SHARE_TO_YOUTUBE.png.sha1
@@ -0,0 +1 @@
+5e03816d5e97ed75908cffc0075b106c2e2415c4
\ No newline at end of file
diff --git a/ash/capture_mode/capture_mode_behavior.cc b/ash/capture_mode/capture_mode_behavior.cc
index 5f09826e..1a7a8a87 100644
--- a/ash/capture_mode/capture_mode_behavior.cc
+++ b/ash/capture_mode/capture_mode_behavior.cc
@@ -21,6 +21,7 @@
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shell.h"
+#include "ash/strings/grit/ash_strings.h"
 #include "ash/wm/mru_window_tracker.h"
 #include "base/files/file_path.h"
 #include "base/functional/bind.h"
@@ -29,6 +30,8 @@
 #include "base/notreached.h"
 #include "base/task/single_thread_task_runner.h"
 #include "ui/aura/window_observer.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/message_center/public/cpp/notification.h"
 
 namespace ash {
 
@@ -239,6 +242,16 @@
     pre_selected_window_->AddObserver(this);
   }
 
+  std::vector<message_center::ButtonInfo> GetNotificationButtonsInfo(
+      bool for_video) const override {
+    CHECK(for_video);
+
+    return {message_center::ButtonInfo{l10n_util::GetStringUTF16(
+                IDS_ASH_SCREEN_CAPTURE_SHARE_TO_YOUTUBE)},
+            message_center::ButtonInfo{l10n_util::GetStringUTF16(
+                IDS_ASH_SCREEN_CAPTURE_BUTTON_DELETE)}};
+  }
+
   // aura::WindowObserver:
   void OnWindowDestroying(aura::Window* window) override {
     CHECK_EQ(window, pre_selected_window_);
@@ -384,6 +397,23 @@
   return "";
 }
 
+std::vector<message_center::ButtonInfo>
+CaptureModeBehavior::GetNotificationButtonsInfo(bool for_video) const {
+  std::vector<message_center::ButtonInfo> buttons_info;
+
+  if (!for_video &&
+      !Shell::Get()->session_controller()->IsUserSessionBlocked()) {
+    message_center::ButtonInfo edit_button(
+        l10n_util::GetStringUTF16(IDS_ASH_SCREEN_CAPTURE_BUTTON_EDIT));
+    buttons_info.push_back(edit_button);
+  }
+  message_center::ButtonInfo delete_button(
+      l10n_util::GetStringUTF16(IDS_ASH_SCREEN_CAPTURE_BUTTON_DELETE));
+  buttons_info.push_back(delete_button);
+
+  return buttons_info;
+}
+
 std::unique_ptr<CaptureModeBarView>
 CaptureModeBehavior::CreateCaptureModeBarView() {
   return std::make_unique<NormalCaptureBarView>(this);
diff --git a/ash/capture_mode/capture_mode_behavior.h b/ash/capture_mode/capture_mode_behavior.h
index 8c7cbf57..849bb6e 100644
--- a/ash/capture_mode/capture_mode_behavior.h
+++ b/ash/capture_mode/capture_mode_behavior.h
@@ -12,6 +12,7 @@
 #include "base/functional/callback_forward.h"
 #include "base/functional/callback_helpers.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
+#include "ui/message_center/public/cpp/notification.h"
 
 namespace aura {
 class Window;
@@ -92,6 +93,12 @@
   // indicate the histogram is for a projector-initiated capture mode session.
   virtual const char* GetClientMetricComponent() const;
 
+  // Returns the client specific buttons info to be shown in the notification
+  // view. The buttons info list may differ based on whether `for_video` is true
+  // or not.
+  virtual std::vector<message_center::ButtonInfo> GetNotificationButtonsInfo(
+      bool for_video) const;
+
   // Creates the capture mode bar view, which might look different depending on
   // the actual type of the behavior.
   virtual std::unique_ptr<CaptureModeBarView> CreateCaptureModeBarView();
diff --git a/ash/capture_mode/capture_mode_controller.cc b/ash/capture_mode/capture_mode_controller.cc
index 6c328c6..7e8ec1a 100644
--- a/ash/capture_mode/capture_mode_controller.cc
+++ b/ash/capture_mode/capture_mode_controller.cc
@@ -132,7 +132,8 @@
 
 // The video notification button index.
 enum VideoNotificationButtonIndex {
-  BUTTON_DELETE_VIDEO = 0,
+  BUTTON_SHARE_TO_YOUTUBE = 0,
+  BUTTON_DELETE_VIDEO,
 };
 
 // Returns the file extension for the given `recording_type` and the current
@@ -1399,7 +1400,10 @@
   DCHECK(png_bytes && png_bytes->size());
   const auto image = gfx::Image::CreateFrom1xPNGBytes(png_bytes);
   CopyImageToClipboard(image);
-  ShowPreviewNotification(file_saved_path, image, CaptureModeType::kImage);
+  // TODO(michelefan): Do not hard-code `BehaviorType::kDefault`. Screenshot
+  // notification should be separated among different behaviors.
+  ShowPreviewNotification(file_saved_path, image, CaptureModeType::kImage,
+                          GetBehavior(BehaviorType::kDefault));
   if (Shell::Get()->session_controller()->IsActiveUserSessionStarted())
     RecordSaveToLocation(GetSaveToOption(file_saved_path));
   // NOTE: Holding space `client` may be `nullptr` in tests.
@@ -1422,7 +1426,7 @@
     if (behavior->ShouldShowPreviewNotification()) {
       ShowPreviewNotification(saved_video_file_path,
                               gfx::Image(video_thumbnail),
-                              CaptureModeType::kVideo);
+                              CaptureModeType::kVideo, behavior);
       // NOTE: Holding space `client` may be `nullptr` in tests.
       if (auto* client = HoldingSpaceController::Get()->client()) {
         client->AddItemOfType(is_gif
@@ -1451,7 +1455,8 @@
 void CaptureModeController::ShowPreviewNotification(
     const base::FilePath& screen_capture_path,
     const gfx::Image& preview_image,
-    const CaptureModeType type) {
+    const CaptureModeType type,
+    const CaptureModeBehavior* behavior) {
   const bool for_video = type == CaptureModeType::kVideo;
   const int title_id = GetNotificationTitleIdForFile(screen_capture_path);
   const int message_id = for_video && low_disk_space_threshold_reached_
@@ -1459,13 +1464,7 @@
                              : IDS_ASH_SCREEN_CAPTURE_MESSAGE;
 
   message_center::RichNotificationData optional_fields;
-  message_center::ButtonInfo edit_button(
-      l10n_util::GetStringUTF16(IDS_ASH_SCREEN_CAPTURE_BUTTON_EDIT));
-  if (!for_video && !Shell::Get()->session_controller()->IsUserSessionBlocked())
-    optional_fields.buttons.push_back(edit_button);
-  message_center::ButtonInfo delete_button(
-      l10n_util::GetStringUTF16(IDS_ASH_SCREEN_CAPTURE_BUTTON_DELETE));
-  optional_fields.buttons.push_back(delete_button);
+  optional_fields.buttons = behavior->GetNotificationButtonsInfo(for_video);
 
   optional_fields.image = preview_image;
   optional_fields.image_path = screen_capture_path;
@@ -1491,12 +1490,20 @@
   } else {
     const int button_index_value = button_index.value();
     if (type == CaptureModeType::kVideo) {
-      DCHECK_EQ(button_index_value,
-                VideoNotificationButtonIndex::BUTTON_DELETE_VIDEO);
-      DeleteFileAsync(blocking_task_runner_, screen_capture_path,
-                      std::move(on_file_deleted_callback_for_test_));
+      switch (button_index_value) {
+        case VideoNotificationButtonIndex::BUTTON_SHARE_TO_YOUTUBE:
+          OnShareToYouTubeButtonPressed();
+          break;
+        case VideoNotificationButtonIndex::BUTTON_DELETE_VIDEO:
+          DeleteFileAsync(blocking_task_runner_, screen_capture_path,
+                          std::move(on_file_deleted_callback_for_test_));
+          break;
+        default:
+          NOTREACHED();
+          break;
+      }
     } else {
-      DCHECK_EQ(type, CaptureModeType::kImage);
+      CHECK_EQ(type, CaptureModeType::kImage);
       switch (button_index_value) {
         case ScreenshotNotificationButtonIndex::BUTTON_EDIT:
           delegate_->OpenScreenshotInImageEditor(screen_capture_path);
diff --git a/ash/capture_mode/capture_mode_controller.h b/ash/capture_mode/capture_mode_controller.h
index 5a90395..3b00fdc 100644
--- a/ash/capture_mode/capture_mode_controller.h
+++ b/ash/capture_mode/capture_mode_controller.h
@@ -437,10 +437,12 @@
                         const CaptureModeBehavior* behavior);
 
   // Shows a preview notification of the newly taken screenshot or screen
-  // recording.
+  // recording. Customized notification view will be decided based on the
+  // `behavior`.
   void ShowPreviewNotification(const base::FilePath& screen_capture_path,
                                const gfx::Image& preview_image,
-                               const CaptureModeType type);
+                               const CaptureModeType type,
+                               const CaptureModeBehavior* behavior);
   void HandleNotificationClicked(const base::FilePath& screen_capture_path,
                                  const CaptureModeType type,
                                  absl::optional<int> button_index);
diff --git a/ash/capture_mode/capture_mode_game_dashboard_unittests.cc b/ash/capture_mode/capture_mode_game_dashboard_unittests.cc
index 59ed5b4..99f256b 100644
--- a/ash/capture_mode/capture_mode_game_dashboard_unittests.cc
+++ b/ash/capture_mode/capture_mode_game_dashboard_unittests.cc
@@ -9,16 +9,31 @@
 #include "ash/capture_mode/capture_mode_session_focus_cycler.h"
 #include "ash/capture_mode/capture_mode_session_test_api.h"
 #include "ash/capture_mode/capture_mode_test_util.h"
+#include "ash/capture_mode/test_capture_mode_delegate.h"
 #include "ash/constants/ash_features.h"
+#include "ash/public/cpp/capture_mode/capture_mode_test_api.h"
 #include "ash/shell.h"
+#include "ash/strings/grit/ash_strings.h"
 #include "ash/style/pill_button.h"
 #include "ash/test/ash_test_base.h"
 #include "base/system/sys_info.h"
 #include "base/test/scoped_feature_list.h"
 #include "chromeos/ui/base/window_properties.h"
+#include "ui/base/l10n/l10n_util.h"
+
+namespace message_center {
+
+bool operator==(const ButtonInfo& lhs, const ButtonInfo& rhs) {
+  return std::tie(lhs.title, lhs.icon, lhs.placeholder, lhs.type) ==
+         std::tie(rhs.title, rhs.icon, rhs.placeholder, rhs.type);
+}
+
+}  // namespace message_center
 
 namespace ash {
 
+using ButtonInfo = message_center::ButtonInfo;
+
 class GameDashboardCaptureModeTest : public AshTestBase {
  public:
   GameDashboardCaptureModeTest()
@@ -153,4 +168,47 @@
             window_bounds.bottom());
 }
 
+// Tests that the game dashboard-initiated capture mode session shows the
+// notification view with 'Share to YouTube' button and 'delete' buttons.
+TEST_F(GameDashboardCaptureModeTest, NotificationView) {
+  CaptureModeController* controller = StartGameCaptureModeSession();
+  CaptureModeSession* session = controller->capture_mode_session();
+  CaptureModeBehavior* active_behavior = session->active_behavior();
+  ASSERT_TRUE(active_behavior);
+  StartVideoRecordingImmediately();
+  CaptureModeTestApi().FlushRecordingServiceForTesting();
+
+  auto* test_delegate =
+      static_cast<TestCaptureModeDelegate*>(controller->delegate_for_testing());
+
+  // Request and wait for a video frame so that the recording service can use it
+  // to create a video thumbnail.
+  test_delegate->RequestAndWaitForVideoFrame();
+  SkBitmap service_thumbnail =
+      gfx::Image(test_delegate->GetVideoThumbnail()).AsBitmap();
+  EXPECT_FALSE(service_thumbnail.drawsNothing());
+
+  controller->EndVideoRecording(EndRecordingReason::kStopRecordingButton);
+  EXPECT_FALSE(controller->is_recording_in_progress());
+  CaptureNotificationWaiter().Wait();
+
+  const message_center::Notification* notification = GetPreviewNotification();
+  EXPECT_TRUE(notification);
+  EXPECT_FALSE(notification->image().IsEmpty());
+
+  std::vector<ButtonInfo> expected_buttons_info = {
+      ButtonInfo(
+          l10n_util::GetStringUTF16(IDS_ASH_SCREEN_CAPTURE_SHARE_TO_YOUTUBE)),
+      ButtonInfo(
+          l10n_util::GetStringUTF16(IDS_ASH_SCREEN_CAPTURE_BUTTON_DELETE))};
+  auto actual_buttons_info =
+      active_behavior->GetNotificationButtonsInfo(/*for_video=*/true);
+  EXPECT_EQ(actual_buttons_info.size(), 2u);
+  EXPECT_TRUE(actual_buttons_info == expected_buttons_info);
+
+  const int share_to_youtube_button = 0;
+  ClickOnNotification(share_to_youtube_button);
+  EXPECT_FALSE(GetPreviewNotification());
+}
+
 }  // namespace ash
diff --git a/ash/capture_mode/capture_mode_test_util.cc b/ash/capture_mode/capture_mode_test_util.cc
index 66f3648..62be723 100644
--- a/ash/capture_mode/capture_mode_test_util.cc
+++ b/ash/capture_mode/capture_mode_test_util.cc
@@ -46,6 +46,8 @@
 
 namespace {
 
+constexpr char kScreenCaptureNotificationId[] = "capture_mode_notification";
+
 // Dispatch the simulated virtual key event to the WindowEventDispatcher.
 void DispatchVKEvent(ui::test::EventGenerator* event_generator,
                      bool is_press,
@@ -337,6 +339,23 @@
   return GetCaptureModeBarView()->close_button();
 }
 
+const message_center::Notification* GetPreviewNotification() {
+  const message_center::NotificationList::Notifications notifications =
+      message_center::MessageCenter::Get()->GetVisibleNotifications();
+  for (const auto* notification : notifications) {
+    if (notification->id() == kScreenCaptureNotificationId) {
+      return notification;
+    }
+  }
+  return nullptr;
+}
+
+void ClickOnNotification(absl::optional<int> button_index) {
+  const message_center::Notification* notification = GetPreviewNotification();
+  CHECK(notification);
+  notification->delegate()->Click(button_index, absl::nullopt);
+}
+
 // -----------------------------------------------------------------------------
 // ProjectorCaptureModeIntegrationHelper:
 
@@ -404,4 +423,26 @@
   wait_loop_.Quit();
 }
 
+// -----------------------------------------------------------------------------
+// CaptureNotificationWaiter:
+
+CaptureNotificationWaiter::CaptureNotificationWaiter() {
+  message_center::MessageCenter::Get()->AddObserver(this);
+}
+
+CaptureNotificationWaiter::~CaptureNotificationWaiter() {
+  message_center::MessageCenter::Get()->RemoveObserver(this);
+}
+
+void CaptureNotificationWaiter::Wait() {
+  run_loop_.Run();
+}
+
+void CaptureNotificationWaiter::OnNotificationAdded(
+    const std::string& notification_id) {
+  if (notification_id == kScreenCaptureNotificationId) {
+    run_loop_.Quit();
+  }
+}
+
 }  // namespace ash
diff --git a/ash/capture_mode/capture_mode_test_util.h b/ash/capture_mode/capture_mode_test_util.h
index 84311b4a..6554d40e 100644
--- a/ash/capture_mode/capture_mode_test_util.h
+++ b/ash/capture_mode/capture_mode_test_util.h
@@ -15,6 +15,9 @@
 #include "base/test/scoped_feature_list.h"
 #include "ui/events/event_constants.h"
 #include "ui/events/keycodes/keyboard_codes_posix.h"
+#include "ui/message_center/message_center.h"
+#include "ui/message_center/message_center_observer.h"
+#include "ui/message_center/public/cpp/notification.h"
 #include "ui/views/view.h"
 #include "ui/views/view_observer.h"
 
@@ -143,6 +146,12 @@
 IconButton* GetSettingsButton();
 IconButton* GetCloseButton();
 
+// Returns the capture mode related notifications from the message center.
+const message_center::Notification* GetPreviewNotification();
+
+// Clicks on the area in the notification specified by the `button_index`.
+void ClickOnNotification(absl::optional<int> button_index);
+
 // Defines a helper class to allow setting up and testing the Projector feature
 // in multiple test fixtures. Note that this helper initializes the Projector-
 // related features in its constructor, so test fixtures that use this should
@@ -194,6 +203,21 @@
   base::RunLoop wait_loop_;
 };
 
+// Defines a waiter to observe the notification changes.
+class CaptureNotificationWaiter : public message_center::MessageCenterObserver {
+ public:
+  CaptureNotificationWaiter();
+  ~CaptureNotificationWaiter() override;
+
+  void Wait();
+
+  // message_center::MessageCenterObserver:
+  void OnNotificationAdded(const std::string& notification_id) override;
+
+ private:
+  base::RunLoop run_loop_;
+};
+
 }  // namespace ash
 
 #endif  // ASH_CAPTURE_MODE_CAPTURE_MODE_TEST_UTIL_H_
diff --git a/ash/capture_mode/capture_mode_unittests.cc b/ash/capture_mode/capture_mode_unittests.cc
index 321354d..6e05e8d 100644
--- a/ash/capture_mode/capture_mode_unittests.cc
+++ b/ash/capture_mode/capture_mode_unittests.cc
@@ -131,7 +131,6 @@
 
 constexpr char kEndRecordingReasonInClamshellHistogramName[] =
     "Ash.CaptureModeController.EndRecordingReason.ClamshellMode";
-constexpr char kScreenCaptureNotificationId[] = "capture_mode_notification";
 
 // Returns true if the software-composited cursor is enabled.
 bool IsCursorCompositingEnabled() {
@@ -141,23 +140,6 @@
       ->is_cursor_compositing_enabled();
 }
 
-const message_center::Notification* GetPreviewNotification() {
-  const message_center::NotificationList::Notifications notifications =
-      message_center::MessageCenter::Get()->GetVisibleNotifications();
-  for (const auto* notification : notifications) {
-    if (notification->id() == kScreenCaptureNotificationId) {
-      return notification;
-    }
-  }
-  return nullptr;
-}
-
-void ClickNotification(absl::optional<int> button_index) {
-  const message_center::Notification* notification = GetPreviewNotification();
-  DCHECK(notification);
-  notification->delegate()->Click(button_index, absl::nullopt);
-}
-
 // Sets up a callback that will be triggered when a capture file (image or
 // video) is deleted as a result of a user action. The callback will verify the
 // successful deletion of the file, and will quit the given `loop`.
@@ -411,28 +393,6 @@
   base::WeakPtr<views::Widget> widget_;
 };
 
-class CaptureNotificationWaiter : public message_center::MessageCenterObserver {
- public:
-  CaptureNotificationWaiter() {
-    message_center::MessageCenter::Get()->AddObserver(this);
-  }
-  ~CaptureNotificationWaiter() override {
-    message_center::MessageCenter::Get()->RemoveObserver(this);
-  }
-
-  void Wait() { run_loop_.Run(); }
-
-  // message_center::MessageCenterObserver:
-  void OnNotificationAdded(const std::string& notification_id) override {
-    if (notification_id == kScreenCaptureNotificationId) {
-      run_loop_.Quit();
-    }
-  }
-
- private:
-  base::RunLoop run_loop_;
-};
-
 TEST_F(CaptureModeTest, StartStop) {
   auto* controller = CaptureModeController::Get();
   controller->Start(CaptureModeEntryType::kQuickSettings);
@@ -4288,7 +4248,7 @@
   base::RunLoop loop;
   SetUpFileDeletionVerifier(&loop);
   const int delete_button = 1;
-  ClickNotification(delete_button);
+  ClickOnNotification(delete_button);
   loop.Run();
   EXPECT_FALSE(GetPreviewNotification());
   histogram_tester.ExpectBucketCount(kQuickActionHistogramName,
@@ -4302,7 +4262,7 @@
     waiter.Wait();
   }
   // Click on the notification body. This should take us to the files app.
-  ClickNotification(absl::nullopt);
+  ClickOnNotification(absl::nullopt);
   EXPECT_FALSE(GetPreviewNotification());
   histogram_tester.ExpectBucketCount(kQuickActionHistogramName,
                                      CaptureQuickAction::kFiles, 1);
@@ -4317,7 +4277,7 @@
   }
   const int edit_button = 0;
   // Verify clicking edit on screenshot notification.
-  ClickNotification(edit_button);
+  ClickOnNotification(edit_button);
   EXPECT_FALSE(GetPreviewNotification());
   histogram_tester.ExpectBucketCount(kQuickActionHistogramName,
                                      CaptureQuickAction::kBacklight, 1);
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc
index 90114cde..5faac16 100644
--- a/ash/constants/ash_features.cc
+++ b/ash/constants/ash_features.cc
@@ -1365,6 +1365,12 @@
              "JapaneseFunctionRow",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
+// Controls whether the "Remember password" button in the Kerberos "Add account"
+// dialog should be checked by default.
+BASE_FEATURE(kKerberosRememberPasswordByDefault,
+             "KerberosRememberPasswordByDefault",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Enables IME button in the floating accessibility menu for the Kiosk session.
 BASE_FEATURE(kKioskEnableImeButton,
              "KioskEnableImeButton",
@@ -1645,6 +1651,11 @@
 // Enables OOBE Jelly features.
 BASE_FEATURE(kOobeJelly, "OobeJelly", base::FEATURE_DISABLED_BY_DEFAULT);
 
+// Enables lazy loading in OOBE's WebUI by prioritizing the first screen.n.
+BASE_FEATURE(kOobeLazyLoading,
+             "OobeLazyLoading",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Enables OOBE Simon features.
 BASE_FEATURE(kFeatureManagementOobeSimon,
              "FeatureManagementOobeSimon",
@@ -3047,6 +3058,10 @@
          base::FeatureList::IsEnabled(kShortcutCustomizationJelly);
 }
 
+bool IsKerberosRememberPasswordByDefaultEnabled() {
+  return base::FeatureList::IsEnabled(kKerberosRememberPasswordByDefault);
+}
+
 bool IsKeyboardBacklightToggleEnabled() {
   return base::FeatureList::IsEnabled(kEnableKeyboardBacklightToggle);
 }
@@ -3229,6 +3244,11 @@
   return base::FeatureList::IsEnabled(kOobeSoftwareUpdate);
 }
 
+bool IsOobeLazyLoadingEnabled() {
+  return base::FeatureList::IsEnabled(kOobeLazyLoading);
+}
+
+
 bool IsOobeQuickStartEnabled() {
   return base::FeatureList::IsEnabled(kOobeQuickStart);
 }
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h
index 42827bf..fd46a37 100644
--- a/ash/constants/ash_features.h
+++ b/ash/constants/ash_features.h
@@ -415,6 +415,8 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kIppClientInfo);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kJapaneseFunctionRow);
+COMPONENT_EXPORT(ASH_CONSTANTS)
+BASE_DECLARE_FEATURE(kKerberosRememberPasswordByDefault);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kKioskEnableImeButton);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kAutoEnrollmentKioskInOobe);
@@ -478,6 +480,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeHidDetectionRevamp);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeGaiaInfoScreen);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeJelly);
+COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeLazyLoading);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeSimon);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeSoftwareUpdate);
 COMPONENT_EXPORT(ASH_CONSTANTS)
@@ -835,6 +838,8 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsJellyEnabledForScanningApp();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsJellyEnabledForShortcutCustomization();
 COMPONENT_EXPORT(ASH_CONSTANTS)
+bool IsKerberosRememberPasswordByDefaultEnabled();
+COMPONENT_EXPORT(ASH_CONSTANTS)
 bool IsKeyboardBacklightToggleEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLanguagePacksEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLauncherNudgeShortIntervalEnabled();
@@ -864,6 +869,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOAuthIppEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeChoobeEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeDrivePinningEnabled();
+COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeLazyLoadingEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeChromeVoxHintEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeHidDetectionRevampEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeGaiaInfoScreenEnabled();
diff --git a/ash/constants/ash_pref_names.cc b/ash/constants/ash_pref_names.cc
index bf6e2d4..fda531b 100644
--- a/ash/constants/ash_pref_names.cc
+++ b/ash/constants/ash_pref_names.cc
@@ -1475,17 +1475,15 @@
 // Copy of owner tap-to-click option to use on login screen.
 const char kOwnerTapToClickEnabled[] = "owner.touchpad.enable_tap_to_click";
 
-// A boolean pref set to true if a user simulates a right click using their
-// keyboard and touchpad with either Alt+Click or Search+Click.
-// The value of this pref will be used to set the default behavior for
-// remapping to right click once the setting is added/configurable in device
-// settings.
-// Default setting:
-//  Boolean Pref is false: Off
-//  Boolean Pref is true: Use state of "kUseSearchForRightClick" flag to
-//  determine if Alt+Click or Search+Click should be the default.
-const char kEventRemappedToRightClick[] =
-    "ash.settings.event_remapped_to_right_click";
+// An integer pref that is incremented anytime a user simulates a right click
+// using their keyboard and touchpad with Alt+Click.
+const char kAltEventRemappedToRightClick[] =
+    "ash.settings.alt_event_remapped_to_right_click";
+
+// An integer pref that is incremented anytime a user simulates a right click
+// using their keyboard and touchpad with Search+Click.
+const char kSearchEventRemappedToRightClick[] =
+    "ash.settings.search_event_remapped_to_right_click";
 
 // An integer pref for tracking Alt and Search based key event rewrites for
 // the Delete "six pack" key. The value of this pref will be used to set the
diff --git a/ash/constants/ash_pref_names.h b/ash/constants/ash_pref_names.h
index 75029bb4..7954331 100644
--- a/ash/constants/ash_pref_names.h
+++ b/ash/constants/ash_pref_names.h
@@ -704,7 +704,10 @@
 extern const char kOwnerTapToClickEnabled[];
 
 COMPONENT_EXPORT(ASH_CONSTANTS)
-extern const char kEventRemappedToRightClick[];
+extern const char kAltEventRemappedToRightClick[];
+
+COMPONENT_EXPORT(ASH_CONSTANTS)
+extern const char kSearchEventRemappedToRightClick[];
 
 COMPONENT_EXPORT(ASH_CONSTANTS)
 extern const char kKeyEventRemappedToSixPackDelete[];
diff --git a/ash/events/accessibility_event_rewriter_unittest.cc b/ash/events/accessibility_event_rewriter_unittest.cc
index 8a5aa0a..59a059a 100644
--- a/ash/events/accessibility_event_rewriter_unittest.cc
+++ b/ash/events/accessibility_event_rewriter_unittest.cc
@@ -210,7 +210,7 @@
   bool NotifyDeprecatedSixPackKeyRewrite(ui::KeyboardCode key_code) override {
     return false;
   }
-  void RecordEventRemappedToRightClick() override {}
+  void RecordEventRemappedToRightClick(bool alt_based_right_click) override {}
   void RecordSixPackEventRewrite(ui::KeyboardCode key_code,
                                  bool alt_based) override {}
 
@@ -614,7 +614,7 @@
     return false;
   }
 
-  void RecordEventRemappedToRightClick() override {}
+  void RecordEventRemappedToRightClick(bool alt_based_right_click) override {}
   void RecordSixPackEventRewrite(ui::KeyboardCode key_code,
                                  bool alt_based) override {}
 
diff --git a/ash/events/keyboard_capability_unittest.cc b/ash/events/keyboard_capability_unittest.cc
index 0b9f9e3..7f6136a 100644
--- a/ash/events/keyboard_capability_unittest.cc
+++ b/ash/events/keyboard_capability_unittest.cc
@@ -1121,6 +1121,8 @@
         return CustomTopRowScanCode::kPreviousTrack;
       case ui::TopRowActionKey::kPlayPause:
         return CustomTopRowScanCode::kPlayPause;
+      case ui::TopRowActionKey::kPrivacyScreenToggle:
+        return CustomTopRowScanCode::kPrivacyScreenToggle;
       case ui::TopRowActionKey::kAllApplications:
       case ui::TopRowActionKey::kEmojiPicker:
       case ui::TopRowActionKey::kDictation:
@@ -1179,6 +1181,7 @@
             ui::TopRowActionKey::kBack,
             ui::TopRowActionKey::kForward,
             ui::TopRowActionKey::kRefresh,
+            ui::TopRowActionKey::kPrivacyScreenToggle,
         },
         {
             ui::TopRowActionKey::kMicrophoneMute,
@@ -1193,7 +1196,6 @@
                               "Internal Keyboard");
   fake_keyboard_manager_->AddFakeKeyboard(keyboard, custom_layout_string_,
                                           /*has_custom_top_row=*/true);
-
   for (ui::TopRowActionKey action_key = ui::TopRowActionKey::kMinValue;
        action_key <= ui::TopRowActionKey::kMaxValue;
        action_key =
diff --git a/ash/shelf/shelf_party_feature_pod_controller_unittest.cc b/ash/shelf/shelf_party_feature_pod_controller_unittest.cc
index 43caf36..7cae504 100644
--- a/ash/shelf/shelf_party_feature_pod_controller_unittest.cc
+++ b/ash/shelf/shelf_party_feature_pod_controller_unittest.cc
@@ -57,6 +57,10 @@
     return IsQsRevampEnabled() ? tile_->GetVisible() : button_->GetVisible();
   }
 
+  bool IsButtonToggled() {
+    return IsQsRevampEnabled() ? tile_->IsToggled() : button_->IsToggled();
+  }
+
   void PressIcon() { controller_->OnIconPressed(); }
 
  private:
@@ -71,27 +75,52 @@
                          testing::Bool());
 
 TEST_P(ShelfPartyFeaturePodControllerTest, ButtonVisibility) {
+  auto* session_controller = GetSessionControllerClient();
   // The button is visible in an active session.
   CreateButton();
   EXPECT_TRUE(IsButtonVisible());
 
   // The button is not visible at the lock screen.
-  GetSessionControllerClient()->LockScreen();
+  session_controller->LockScreen();
+  CreateButton();
+  EXPECT_FALSE(IsButtonVisible());
+
+  // The button is not visible when enterprise managed.
+  session_controller->set_is_enterprise_managed(true);
+  session_controller->SetSessionState(session_manager::SessionState::ACTIVE);
   CreateButton();
   EXPECT_FALSE(IsButtonVisible());
 }
 
 TEST_P(ShelfPartyFeaturePodControllerTest, PressIconTogglesShelfParty) {
+  auto* shelf_model = Shell::Get()->shelf_controller()->model();
   CreateButton();
-  ASSERT_FALSE(Shell::Get()->shelf_controller()->model()->in_shelf_party());
+  ASSERT_FALSE(shelf_model->in_shelf_party());
 
   // Pressing the icon enables shelf party.
   PressIcon();
-  EXPECT_TRUE(Shell::Get()->shelf_controller()->model()->in_shelf_party());
+  EXPECT_TRUE(shelf_model->in_shelf_party());
 
   // Pressing the icon again disables shelf party.
   PressIcon();
-  EXPECT_FALSE(Shell::Get()->shelf_controller()->model()->in_shelf_party());
+  EXPECT_FALSE(shelf_model->in_shelf_party());
+}
+
+TEST_P(ShelfPartyFeaturePodControllerTest, ShelfPartyToggled) {
+  auto* shelf_model = Shell::Get()->shelf_controller()->model();
+  CreateButton();
+  ASSERT_FALSE(shelf_model->in_shelf_party());
+  EXPECT_FALSE(IsButtonToggled());
+
+  // Toggles the shelf party from `shelf_model` to enable shelf party.
+  shelf_model->ToggleShelfParty();
+  EXPECT_TRUE(shelf_model->in_shelf_party());
+  EXPECT_TRUE(IsButtonToggled());
+
+  // Toggles again to disable shelf party.
+  shelf_model->ToggleShelfParty();
+  EXPECT_FALSE(shelf_model->in_shelf_party());
+  EXPECT_FALSE(IsButtonToggled());
 }
 
 }  // namespace ash
diff --git a/ash/shelf/shelf_unittest.cc b/ash/shelf/shelf_unittest.cc
index 1a2f619..2c2ce69 100644
--- a/ash/shelf/shelf_unittest.cc
+++ b/ash/shelf/shelf_unittest.cc
@@ -229,81 +229,5 @@
   // No crash.
 }
 
-class ShelfPartyQsTileTest : public NoSessionAshTestBase {
- public:
-  ShelfPartyQsTileTest() = default;
-  ShelfPartyQsTileTest(const ShelfPartyQsTileTest&) = delete;
-  ShelfPartyQsTileTest& operator=(const ShelfPartyQsTileTest&) = delete;
-  ~ShelfPartyQsTileTest() override = default;
-
-  // AshTestBase:
-  void SetUp() override {
-    AshTestBase::SetUp();
-    shelf_model_ = GetPrimaryShelf()->GetShelfViewForTesting()->model();
-    qs_tile_controller_ = std::make_unique<ShelfPartyFeaturePodController>();
-    qs_tile_button_view_.reset(qs_tile_controller_->CreateButton());
-  }
-
-  void TearDown() override {
-    qs_tile_controller_.reset();
-    qs_tile_button_view_.reset();
-    AshTestBase::TearDown();
-  }
-
- protected:
-  ShelfModel* shelf_model() { return shelf_model_; }
-  ShelfPartyFeaturePodController* qs_tile_controller() {
-    return qs_tile_controller_.get();
-  }
-  FeaturePodButton* qs_tile_button_view() { return qs_tile_button_view_.get(); }
-
- private:
-  raw_ptr<ShelfModel, ExperimentalAsh> shelf_model_ = nullptr;
-  std::unique_ptr<ShelfPartyFeaturePodController> qs_tile_controller_;
-  std::unique_ptr<FeaturePodButton> qs_tile_button_view_;
-};
-
-TEST_F(ShelfPartyQsTileTest, VisibleWhenUserSessionIsActive) {
-  EXPECT_FALSE(qs_tile_button_view()->GetVisible());
-  auto* session_controller = GetSessionControllerClient();
-  session_controller->SetSessionState(session_manager::SessionState::ACTIVE);
-  EXPECT_TRUE(qs_tile_button_view()->GetVisible());
-  session_controller->SetSessionState(session_manager::SessionState::LOCKED);
-  EXPECT_FALSE(qs_tile_button_view()->GetVisible());
-}
-
-TEST_F(ShelfPartyQsTileTest, InvisibleWhenEnterpriseManaged) {
-  auto* session_controller = GetSessionControllerClient();
-  session_controller->set_is_enterprise_managed(true);
-  session_controller->SetSessionState(session_manager::SessionState::ACTIVE);
-  EXPECT_FALSE(qs_tile_button_view()->GetVisible());
-}
-
-TEST_F(ShelfPartyQsTileTest, OnIconPressed) {
-  GetSessionControllerClient()->SetSessionState(
-      session_manager::SessionState::ACTIVE);
-  EXPECT_FALSE(shelf_model()->in_shelf_party());
-  EXPECT_FALSE(qs_tile_button_view()->IsToggled());
-  qs_tile_controller()->OnIconPressed();
-  EXPECT_TRUE(shelf_model()->in_shelf_party());
-  EXPECT_TRUE(qs_tile_button_view()->IsToggled());
-  qs_tile_controller()->OnIconPressed();
-  EXPECT_FALSE(shelf_model()->in_shelf_party());
-  EXPECT_FALSE(qs_tile_button_view()->IsToggled());
-}
-
-TEST_F(ShelfPartyQsTileTest, ShelfPartyToggled) {
-  GetSessionControllerClient()->SetSessionState(
-      session_manager::SessionState::ACTIVE);
-  EXPECT_FALSE(shelf_model()->in_shelf_party());
-  EXPECT_FALSE(qs_tile_button_view()->IsToggled());
-  shelf_model()->ToggleShelfParty();
-  EXPECT_TRUE(shelf_model()->in_shelf_party());
-  EXPECT_TRUE(qs_tile_button_view()->IsToggled());
-  shelf_model()->ToggleShelfParty();
-  EXPECT_FALSE(shelf_model()->in_shelf_party());
-  EXPECT_FALSE(qs_tile_button_view()->IsToggled());
-}
-
 }  // namespace
 }  // namespace ash
diff --git a/ash/style/system_components_unittests.cc b/ash/style/system_components_unittests.cc
index ad22ae0..f4727b8 100644
--- a/ash/style/system_components_unittests.cc
+++ b/ash/style/system_components_unittests.cc
@@ -2,20 +2,26 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
 #include <string>
 
 #include "ash/resources/vector_icons/vector_icons.h"
+#include "ash/shell.h"
 #include "ash/style/checkbox_group.h"
 #include "ash/style/icon_button.h"
 #include "ash/style/icon_switch.h"
 #include "ash/style/radio_button_group.h"
+#include "ash/style/system_dialog_delegate_view.h"
 #include "ash/style/tab_slider.h"
 #include "ash/style/tab_slider_button.h"
 #include "ash/test/ash_test_base.h"
+#include "ash/wm/desks/desks_util.h"
 #include "base/run_loop.h"
+#include "ui/base/ui_base_types.h"
 #include "ui/chromeos/styles/cros_tokens_color_mappings.h"
 #include "ui/gfx/vector_icon_types.h"
 #include "ui/views/layout/fill_layout.h"
+#include "ui/views/metadata/view_factory_internal.h"
 #include "ui/views/view_test_api.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_delegate.h"
@@ -260,6 +266,133 @@
   EXPECT_FALSE(button_4->GetEnabled());
 }
 
+struct DialogTestParams {
+  ui::ModalType modal_type;
+  bool parent_to_root;
+};
+
+class SystemDialogTest : public SystemComponentsTest,
+                         public testing::WithParamInterface<DialogTestParams> {
+ public:
+  SystemDialogTest() = default;
+  SystemDialogTest(const SystemDialogTest&) = delete;
+  SystemDialogTest& operator=(const SystemDialogTest&) = delete;
+  ~SystemDialogTest() override = default;
+
+ protected:
+  // Create a dialog according to the give test parameters. Resize the host
+  // window with the given host size.
+  void CreateDialog(const DialogTestParams& params,
+                    const gfx::Size& host_size) {
+    // Clear existing dialog and host window instances.
+    dialog_.reset();
+    host_widget_.reset();
+
+    // Generate a new dialog delegate view.
+    auto dialog_view = views::Builder<SystemDialogDelegateView>()
+                           .SetIcon(kTestIcon)
+                           .SetTitleText(u"Title")
+                           .SetDescription(u"Dialog description.")
+                           .Build();
+
+    dialog_view->SetModalType(params.modal_type);
+
+    // Resize the display if the dialog is parented to the root window.
+    // Otherwise, create a host window with the given size.
+    if (params.parent_to_root) {
+      UpdateDisplay(host_size.ToString());
+    } else {
+      UpdateDisplay("1280x720");
+      host_widget_ =
+          CreateTestWidget(nullptr, desks_util::GetActiveDeskContainerId(),
+                           gfx::Rect(host_size), /*show=*/true);
+    }
+
+    // Create a dialog widget.
+    views::Widget::InitParams dialog_params;
+    dialog_params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
+    dialog_params.bounds = gfx::Rect(dialog_view->GetPreferredSize());
+    dialog_params.delegate = dialog_view.release();
+    dialog_params.ownership =
+        views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+    dialog_params.parent = params.parent_to_root
+                               ? Shell::GetPrimaryRootWindow()
+                               : host_widget_->GetNativeWindow();
+    dialog_ = std::make_unique<views::Widget>(std::move(dialog_params));
+    dialog_->Show();
+  }
+
+  // Get the dialog size.
+  int GetDialogWidth() {
+    CHECK(dialog_);
+    return dialog_->GetWindowBoundsInScreen().size().width();
+  }
+
+ private:
+  std::unique_ptr<views::Widget> host_widget_;
+  std::unique_ptr<views::Widget> dialog_;
+};
+
+const DialogTestParams kSystemDialogTestParams[] = {
+    {ui::ModalType::MODAL_TYPE_NONE, /*parent_to_root=*/false},
+    {ui::ModalType::MODAL_TYPE_NONE, /*parent_to_root=*/true},
+    {ui::ModalType::MODAL_TYPE_WINDOW, /*parent_to_root=*/false},
+    {ui::ModalType::MODAL_TYPE_WINDOW, /*parent_to_root=*/true},
+    {ui::ModalType::MODAL_TYPE_CHILD, /*parent_to_root=*/false},
+    {ui::ModalType::MODAL_TYPE_CHILD, /*parent_to_root=*/true},
+    {ui::ModalType::MODAL_TYPE_SYSTEM, /*parent_to_root=*/false},
+    {ui::ModalType::MODAL_TYPE_SYSTEM, /*parent_to_root=*/true},
+};
+
+INSTANTIATE_TEST_SUITE_P(SystemDialogSize,
+                         SystemDialogTest,
+                         testing::ValuesIn(kSystemDialogTestParams));
+
+// Tests the dialog sizes with different sizes of host windows.
+TEST_P(SystemDialogTest, DialogResponsiveSize) {
+  DialogTestParams params = GetParam();
+
+  // When the width of the host window is no smaller than 672, the width of the
+  // dialog is 512.
+  CreateDialog(params, /*host_size=*/gfx::Size(1000, 600));
+  EXPECT_EQ(512, GetDialogWidth());
+
+  CreateDialog(params, /*host_size=*/gfx::Size(672, 600));
+  EXPECT_EQ(512, GetDialogWidth());
+
+  // When the width of the host window is less than 672 and no smaller than 520,
+  // the dialog has a padding of 80 on both sides.
+  CreateDialog(params, /*host_size=*/gfx::Size(671, 600));
+  EXPECT_EQ(511, GetDialogWidth());
+
+  CreateDialog(params, /*host_size=*/gfx::Size(520, 600));
+  EXPECT_EQ(360, GetDialogWidth());
+
+  // When the width of the host window is less than 520 and no smaller than 424,
+  // the width of the dialog is 359.
+  CreateDialog(params, /*host_size=*/gfx::Size(519, 600));
+  EXPECT_EQ(359, GetDialogWidth());
+
+  CreateDialog(params, /*host_size=*/gfx::Size(424, 600));
+  EXPECT_EQ(359, GetDialogWidth());
+
+  // When the width of the host window is less than 424 and no smaller than 400,
+  // the dialog has a padding of 32 on both sides.
+  CreateDialog(params, /*host_size=*/gfx::Size(423, 600));
+  EXPECT_EQ(359, GetDialogWidth());
+
+  CreateDialog(params, /*host_size=*/gfx::Size(400, 600));
+  EXPECT_EQ(336, GetDialogWidth());
+
+  // When the width of the host window is less than 400, the dialog of has
+  // minimum size of 296.
+  CreateDialog(params, /*host_size=*/gfx::Size(399, 600));
+  EXPECT_EQ(296, GetDialogWidth());
+
+  CreateDialog(params, /*host_size=*/gfx::Size(300, 600));
+  EXPECT_EQ(296, GetDialogWidth());
+}
+
 struct TabSliderTestParams {
   TabSliderType type;
   bool distribute_space_evenly;
diff --git a/ash/style/system_dialog.cc b/ash/style/system_dialog.cc
deleted file mode 100644
index 2b85060c..0000000
--- a/ash/style/system_dialog.cc
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/style/system_dialog.h"
-
-#include <algorithm>
-
-#include "ash/style/system_dialog_delegate_view.h"
-#include "ui/aura/window.h"
-#include "ui/views/widget/widget.h"
-
-namespace ash {
-
-// Typical sizes of a dialog.
-constexpr int kDialogWidthLarge = 512;
-constexpr int kDialogWidthMedium = 359;
-constexpr int kDialogWidthSmall = 296;
-
-// The host window sizes that will change the resizing rule of the dialog.
-constexpr int kHostWidthLarge = 672;
-constexpr int kHostWidthMedium = 520;
-constexpr int kHostWidthSmall = 424;
-constexpr int kHostWidthXSmall = 400;
-
-// Padding between the dialog and the host window.
-constexpr int kDialogHostPaddingLarge = 80;
-constexpr int kDialogHostPaddingSmall = 32;
-
-SystemDialog::SystemDialog(
-    std::unique_ptr<SystemDialogDelegateView> dialog_view,
-    aura::Window* host_window)
-    : host_window_(host_window) {
-  views::Widget::InitParams params;
-  params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
-  params.parent = host_window_;
-  // Initialize the dialog bounds with the delegate view's preferred size so
-  // that the sub views could have an appropriate initial layout.
-  params.bounds = gfx::Rect(dialog_view->GetPreferredSize());
-  params.delegate = dialog_view.release();
-
-  // The widget is owned by its native widget.
-  widget_ = new views::Widget(std::move(params));
-  UpdateDialogBounds();
-
-  window_observations_.AddObservation(host_window_);
-  window_observations_.AddObservation(widget_->GetNativeWindow());
-
-  widget_->Show();
-}
-
-SystemDialog::~SystemDialog() {
-  if (widget_) {
-    widget_->CloseWithReason(views::Widget::ClosedReason::kUnspecified);
-  }
-}
-
-void SystemDialog::OnWindowBoundsChanged(aura::Window* window,
-                                         const gfx::Rect& old_bounds,
-                                         const gfx::Rect& new_bounds,
-                                         ui::PropertyChangeReason reason) {
-  if (window == host_window_) {
-    UpdateDialogBounds();
-  }
-}
-
-void SystemDialog::OnWindowDestroying(aura::Window* window) {
-  widget_ = nullptr;
-  window_observations_.RemoveAllObservations();
-}
-
-void SystemDialog::UpdateDialogBounds() {
-  CHECK(widget_);
-
-  const gfx::Rect host_bounds = host_window_->GetBoundsInScreen();
-  const int host_width = host_bounds.width();
-  // The resizing rules of the dialog are as follows:
-  // - When the host window width is larger than `kHostWidthLarge`, the dialog
-  // width would remain at `kDialogWidthLarge`.
-  // - When the host window width is between `kHostWidthMedium` and
-  // `kHostWidthLarge`, the dialog width will decrease but maintain a padding
-  // of `kDialogHostPaddingLarge` on both sides.
-  // - When the host window width is between `kHostWidthSmall` and
-  // `kHostWidthMedium`, the dialog width would remain at `kDialogWidthMedium`.
-  // - When the host window width is less than `kHostWidthXSmall`, the dialog
-  // width will decrease but maintain a padding of `kDialogHostPaddingSmall` on
-  // both sides.
-  // - The dialog minimum width is `kDialogWidthSmall`.
-  int width = kDialogWidthSmall;
-  if (host_width >= kHostWidthLarge) {
-    width = kDialogWidthLarge;
-  } else if (host_width >= kHostWidthMedium) {
-    width = host_width - kDialogHostPaddingLarge * 2;
-  } else if (host_width >= kHostWidthSmall) {
-    width = kDialogWidthMedium;
-  } else if (host_width >= kHostWidthXSmall) {
-    width = host_width - kDialogHostPaddingSmall * 2;
-  }
-
-  auto* dialog_view = widget_->GetContentsView();
-  width = std::clamp(width, dialog_view->GetMinimumSize().width(),
-                     dialog_view->GetMaximumSize().width());
-  const int height = dialog_view->GetHeightForWidth(width);
-  const gfx::Point center = host_bounds.CenterPoint();
-  widget_->SetBounds(gfx::Rect(center.x() - width / 2, center.y() - height / 2,
-                               width, height));
-}
-
-}  // namespace ash
diff --git a/ash/style/system_dialog.h b/ash/style/system_dialog.h
deleted file mode 100644
index b24fe3b..0000000
--- a/ash/style/system_dialog.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_STYLE_SYSTEM_DIALOG_H_
-#define ASH_STYLE_SYSTEM_DIALOG_H_
-
-#include "base/scoped_multi_source_observation.h"
-#include "ui/aura/window_observer.h"
-
-namespace aura {
-class Window;
-}  // namespace aura
-
-namespace views {
-class Widget;
-}  // namespace views
-
-namespace ash {
-
-class SystemDialogDelegateView;
-
-// SystemDialog creates a dialog widget with given system dialog delegate view
-// as contents and parented to the host window. The dialog widget's bounds are
-// adjusted according to the host window bounds.
-class SystemDialog : public aura::WindowObserver {
- public:
-  SystemDialog(std::unique_ptr<SystemDialogDelegateView> dialog_view,
-               aura::Window* host_window);
-  SystemDialog(const SystemDialog&) = delete;
-  SystemDialog& operator=(const SystemDialog&) = delete;
-  ~SystemDialog() override;
-
-  // aura::WindowObserver:
-  void OnWindowBoundsChanged(aura::Window* window,
-                             const gfx::Rect& old_bounds,
-                             const gfx::Rect& new_bounds,
-                             ui::PropertyChangeReason reason) override;
-  void OnWindowDestroying(aura::Window* window) override;
-
- protected:
-  // Adjusts the dialog bounds according to the bounds of `host_window_`.
-  virtual void UpdateDialogBounds();
-
- private:
-  // The parent window of the dialog.
-  const raw_ptr<aura::Window> host_window_;
-  // The dialog widget owned by its native widget.
-  raw_ptr<views::Widget> widget_ = nullptr;
-
-  // The observation observing the dialog's native window and host window.
-  base::ScopedMultiSourceObservation<aura::Window, aura::WindowObserver>
-      window_observations_{this};
-};
-
-}  // namespace ash
-
-#endif  // ASH_STYLE_SYSTEM_DIALOG_H_
diff --git a/ash/style/system_dialog_delegate_view.cc b/ash/style/system_dialog_delegate_view.cc
index 116b4ff7..976a2de 100644
--- a/ash/style/system_dialog_delegate_view.cc
+++ b/ash/style/system_dialog_delegate_view.cc
@@ -10,6 +10,7 @@
 #include "ash/style/pill_button.h"
 #include "ash/style/typography.h"
 #include "base/functional/bind.h"
+#include "ui/aura/window.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
 #include "ui/base/models/image_model.h"
@@ -28,6 +29,7 @@
 #include "ui/views/layout/flex_layout_types.h"
 #include "ui/views/layout/flex_layout_view.h"
 #include "ui/views/view_class_properties.h"
+#include "ui/wm/core/window_util.h"
 
 namespace ash {
 
@@ -52,6 +54,21 @@
 constexpr int kButtonSpacing = 8;
 constexpr int kMinimumAdditionalButtonPadding = 80;
 
+// Typical sizes of a dialog.
+constexpr int kDialogWidthLarge = 512;
+constexpr int kDialogWidthMedium = 359;
+constexpr int kDialogWidthSmall = 296;
+
+// The host window sizes that will change the resizing rule of the dialog.
+constexpr int kHostWidthLarge = 672;
+constexpr int kHostWidthMedium = 520;
+constexpr int kHostWidthSmall = 424;
+constexpr int kHostWidthXSmall = 400;
+
+// Padding between the dialog and the host window.
+constexpr int kDialogHostPaddingLarge = 80;
+constexpr int kDialogHostPaddingSmall = 32;
+
 // The position of the additional content in the dialog child views.
 constexpr int kAdditionalContentID = 3;
 
@@ -68,6 +85,19 @@
   view->SetProperty(views::kFlexBehaviorKey, flex_spec);
 }
 
+// Gets the host window of the dialog.
+aura::Window* GetDialogHostWindow(const views::Widget* dialog_widget) {
+  if (!dialog_widget) {
+    return nullptr;
+  }
+
+  // Return transient parent as the host window if exists. Otherwise, return the
+  // default parent.
+  auto* dialog_window = dialog_widget->GetNativeWindow();
+  auto* transient_parent = wm::GetTransientParent(dialog_window);
+  return transient_parent ? transient_parent : dialog_window->parent();
+}
+
 }  // namespace
 
 //------------------------------------------------------------------------------
@@ -254,6 +284,42 @@
   }
 }
 
+gfx::Size SystemDialogDelegateView::CalculatePreferredSize() const {
+  auto* host_window = GetDialogHostWindow(GetWidget());
+  // If the delegate view is not added to a widget or parented to a host window,
+  // return the default preferred size.
+  if (!host_window) {
+    return views::WidgetDelegateView::CalculatePreferredSize();
+  }
+
+  // Otherwise, calculate the preferred size according to its host window size.
+  const int host_width = host_window->GetBoundsInScreen().width();
+  // The resizing rules of the dialog are as follows:
+  // - When the host window width is larger than `kHostWidthLarge`, the dialog
+  // width would remain at `kDialogWidthLarge`.
+  // - When the host window width is between `kHostWidthMedium` and
+  // `kHostWidthLarge`, the dialog width will decrease but maintain a padding
+  // of `kDialogHostPaddingLarge` on both sides.
+  // - When the host window width is between `kHostWidthSmall` and
+  // `kHostWidthMedium`, the dialog width would remain at `kDialogWidthMedium`.
+  // - When the host window width is less than `kHostWidthXSmall`, the dialog
+  // width will decrease but maintain a padding of `kDialogHostPaddingSmall` on
+  // both sides.
+  // - The dialog minimum width is `kDialogWidthSmall`.
+  int dialog_width = kDialogWidthSmall;
+  if (host_width >= kHostWidthLarge) {
+    dialog_width = kDialogWidthLarge;
+  } else if (host_width >= kHostWidthMedium) {
+    dialog_width = host_width - kDialogHostPaddingLarge * 2;
+  } else if (host_width >= kHostWidthSmall) {
+    dialog_width = kDialogWidthMedium;
+  } else if (host_width >= kHostWidthXSmall) {
+    dialog_width = host_width - kDialogHostPaddingSmall * 2;
+  }
+
+  return gfx::Size(dialog_width, GetHeightForWidth(dialog_width));
+}
+
 gfx::Size SystemDialogDelegateView::GetMinimumSize() const {
   return kMinimumDialogSize;
 }
@@ -262,6 +328,20 @@
   return kMaximumDialogSize;
 }
 
+void SystemDialogDelegateView::OnWidgetInitialized() {
+  UpdateDialogSize();
+}
+
+void SystemDialogDelegateView::OnWorkAreaChanged() {
+  UpdateDialogSize();
+}
+
+void SystemDialogDelegateView::UpdateDialogSize() {
+  if (auto* widget = GetWidget()) {
+    widget->CenterWindow(GetPreferredSize());
+  }
+}
+
 void SystemDialogDelegateView::SetAdditionalContentInternal(
     std::unique_ptr<views::View> view) {
   // If there is an additional content, remove it.
diff --git a/ash/style/system_dialog_delegate_view.h b/ash/style/system_dialog_delegate_view.h
index dff1c03..13093b4 100644
--- a/ash/style/system_dialog_delegate_view.h
+++ b/ash/style/system_dialog_delegate_view.h
@@ -107,8 +107,14 @@
   void SetAdditionalContentCrossAxisAlignment(views::LayoutAlignment alignment);
 
   // views::WidgetDelegateView:
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
+  void OnWidgetInitialized() override;
+  void OnWorkAreaChanged() override;
+
+ protected:
+  virtual void UpdateDialogSize();
 
  private:
   class ButtonContainer;
diff --git a/ash/wallpaper/online_wallpaper_variant_info_fetcher.cc b/ash/wallpaper/online_wallpaper_variant_info_fetcher.cc
index 2bfd9bb..d0baf56 100644
--- a/ash/wallpaper/online_wallpaper_variant_info_fetcher.cc
+++ b/ash/wallpaper/online_wallpaper_variant_info_fetcher.cc
@@ -9,6 +9,7 @@
 #include "ash/public/cpp/wallpaper/online_wallpaper_variant.h"
 #include "ash/public/cpp/wallpaper/wallpaper_controller_client.h"
 #include "ash/public/cpp/wallpaper/wallpaper_info.h"
+#include "ash/wallpaper/wallpaper_constants.h"
 #include "ash/wallpaper/wallpaper_utils/wallpaper_online_variant_utils.h"
 #include "ash/webui/personalization_app/proto/backdrop_wallpaper.pb.h"
 #include "base/functional/bind.h"
@@ -32,8 +33,8 @@
 
   ~VariantMatches() = default;
 
-  // Filters |images| to only the entries that match |asset_id| and
-  // |mode|.
+  // Filters |images| to only the entries that match |location| and
+  // |checkpoint|.
   static absl::optional<VariantMatches> FromImages(
       const std::string& location,
       ScheduleCheckpoint checkpoint,
@@ -42,10 +43,20 @@
     auto image_iter =
         base::ranges::find(images, location, &backdrop::Image::image_url);
 
-    if (image_iter == images.end())
+    if (image_iter == images.end()) {
       return absl::nullopt;
+    }
 
     uint64_t unit_id = image_iter->unit_id();
+    return FromImages(unit_id, checkpoint, images);
+  }
+
+  // Same semantic as the method above but instead of matching against
+  // `location`, `unit_id` is used instead.
+  static absl::optional<VariantMatches> FromImages(
+      uint64_t unit_id,
+      ScheduleCheckpoint checkpoint,
+      const std::vector<backdrop::Image>& images) {
     std::vector<OnlineWallpaperVariant> variants;
     for (const auto& image : images) {
       if (image.unit_id() == unit_id) {
@@ -193,6 +204,24 @@
   return true;
 }
 
+void OnlineWallpaperVariantInfoFetcher::FetchTimeOfDayWallpaper(
+    const AccountId& account_id,
+    uint64_t unit_id,
+    ScheduleCheckpoint checkpoint,
+    FetchParamsCallback callback) {
+  auto request = std::make_unique<OnlineWallpaperRequest>(
+      account_id, wallpaper_constants::kTimeOfDayWallpaperCollectionId,
+      WallpaperLayout::WALLPAPER_LAYOUT_CENTER_CROPPED,
+      /*daily_refresh_enabled=*/false, checkpoint);
+
+  wallpaper_controller_client_->FetchImagesForCollection(
+      wallpaper_constants::kTimeOfDayWallpaperCollectionId,
+      base::BindOnce(
+          &OnlineWallpaperVariantInfoFetcher::OnTimeOfDayWallpapersFetched,
+          weak_factory_.GetWeakPtr(), std::move(request), unit_id,
+          std::move(callback)));
+}
+
 void OnlineWallpaperVariantInfoFetcher::OnSingleFetch(
     std::unique_ptr<OnlineWallpaperRequest> request,
     FetchParamsCallback callback,
@@ -246,4 +275,34 @@
       matches->variants});
 }
 
+void OnlineWallpaperVariantInfoFetcher::OnTimeOfDayWallpapersFetched(
+    std::unique_ptr<OnlineWallpaperRequest> request,
+    uint64_t unit_id,
+    FetchParamsCallback callback,
+    bool success,
+    const std::vector<backdrop::Image>& images) {
+  if (!success) {
+    LOG(WARNING) << "Failed to fetch online wallpapers";
+    std::move(callback).Run(absl::nullopt);
+    return;
+  }
+
+  absl::optional<VariantMatches> matches =
+      VariantMatches::FromImages(unit_id, request->checkpoint, images);
+  if (!matches) {
+    LOG(ERROR) << "No valid variants";
+    std::move(callback).Run(absl::nullopt);
+    return;
+  }
+
+  const OnlineWallpaperVariant& first_image = matches->first_match;
+  DCHECK(IsSuitableOnlineWallpaperVariant(first_image, request->checkpoint));
+
+  std::move(callback).Run(ash::OnlineWallpaperParams{
+      request->account_id, first_image.asset_id, first_image.raw_url,
+      request->collection_id, request->layout, /*preview_mode=*/false,
+      /*from_user=*/false, request->daily_refresh_enabled, matches->unit_id,
+      matches->variants});
+}
+
 }  // namespace ash
diff --git a/ash/wallpaper/online_wallpaper_variant_info_fetcher.h b/ash/wallpaper/online_wallpaper_variant_info_fetcher.h
index c9db97a..42ecb8f 100644
--- a/ash/wallpaper/online_wallpaper_variant_info_fetcher.h
+++ b/ash/wallpaper/online_wallpaper_variant_info_fetcher.h
@@ -26,7 +26,8 @@
 
 class WallpaperControllerClient;
 
-// Resolves wallpaper variants from WallpaperInfo for WallpaperController.
+// Resolves wallpaper variants for WallpaperController. These variants can exist
+// from WallpaperInfo or can be fetched from the backdrop server.
 class ASH_EXPORT OnlineWallpaperVariantInfoFetcher {
  public:
   OnlineWallpaperVariantInfoFetcher();
@@ -60,6 +61,13 @@
                            ScheduleCheckpoint checkpoint,
                            FetchParamsCallback callback);
 
+  // Fetches the time of day wallpaper that has `unit_id` for the user with
+  // `account_id`. Callback is run after the operation completes.
+  void FetchTimeOfDayWallpaper(const AccountId& account_id,
+                               uint64_t unit_id,
+                               ScheduleCheckpoint checkpoint,
+                               FetchParamsCallback callback);
+
  private:
   // An internal representation of the partial information required to construct
   // a complete OnlineWallpaperParams object as provided by the caller of
@@ -99,6 +107,14 @@
       bool success,
       const std::vector<backdrop::Image>& images);
 
+  // Used as callback when the time of day wallpapers are fetched.
+  void OnTimeOfDayWallpapersFetched(
+      std::unique_ptr<OnlineWallpaperRequest> request,
+      uint64_t unit_id,
+      FetchParamsCallback callback,
+      bool success,
+      const std::vector<backdrop::Image>& images);
+
   raw_ptr<WallpaperControllerClient> wallpaper_controller_client_ =
       nullptr;  // not owned
 
diff --git a/ash/wallpaper/online_wallpaper_variant_info_fetcher_unittest.cc b/ash/wallpaper/online_wallpaper_variant_info_fetcher_unittest.cc
index 3e47ee302..88a52d0 100644
--- a/ash/wallpaper/online_wallpaper_variant_info_fetcher_unittest.cc
+++ b/ash/wallpaper/online_wallpaper_variant_info_fetcher_unittest.cc
@@ -7,6 +7,7 @@
 #include "ash/public/cpp/schedule_enums.h"
 #include "ash/public/cpp/wallpaper/wallpaper_info.h"
 #include "ash/wallpaper/test_wallpaper_controller_client.h"
+#include "ash/wallpaper/wallpaper_constants.h"
 #include "base/functional/callback_forward.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
@@ -41,6 +42,31 @@
   return images;
 }
 
+// Returns the time of day wallpapers in order of light, morning, late
+// afternoon, and dark.
+std::vector<backdrop::Image> TimeOfDayImageSet() {
+  const uint64_t kUnitId = 439;
+  const std::vector<backdrop::Image_ImageType> image_types = {
+      backdrop::Image::IMAGE_TYPE_LIGHT_MODE,
+      backdrop::Image::IMAGE_TYPE_MORNING_MODE,
+      backdrop::Image::IMAGE_TYPE_LATE_AFTERNOON_MODE,
+      backdrop::Image::IMAGE_TYPE_DARK_MODE};
+
+  std::vector<backdrop::Image> images;
+  for (size_t i = 0; i < image_types.size(); ++i) {
+    const uint64_t asset_id = i + 99;
+    const std::string url =
+        base::StringPrintf("https://preferred_wallpaper/images/%zu", asset_id);
+    backdrop::Image image;
+    image.set_asset_id(asset_id);
+    image.set_unit_id(kUnitId);
+    image.set_image_type(image_types[i]);
+    image.set_image_url(url);
+    images.push_back(image);
+  }
+  return images;
+}
+
 class OnlineWallpaperVariantInfoFetcherTest : public testing::Test {
  public:
   OnlineWallpaperVariantInfoFetcherTest()
@@ -173,61 +199,18 @@
        FetchOnlineWallpaper_TimeOfDayVariants) {
   // Add some images for a new collection id.
   const std::string kCollectionId = "FetchOnline";
-  const uint64_t kLightAssetId = 99;
-  const std::string kLightUrl = "https://preferred_wallpaper/images/99";
-  const uint64_t kMorningAssetId = 101;
-  const std::string kMorningUrl = "https://preferred_wallpaper/images/101";
-  const uint64_t kLateAfternoonAssetId = 103;
-  const std::string kLateAfternoonUrl =
-      "https://preferred_wallpaper/images/103";
-  const uint64_t kDarkAssetId = 105;
-  const std::string kDarkUrl = "https://preferred_wallpaper/images/105";
-  const uint64_t kUnitId = 439;
-
-  // Initially populate the collection with images we won't use.
-  std::vector<backdrop::Image> images =
-      ImageSet(backdrop::Image::IMAGE_TYPE_UNKNOWN, 6u);
-
-  // Push all assets that share a unit id.
-  backdrop::Image light_image;
-  light_image.set_asset_id(kLightAssetId);
-  light_image.set_unit_id(kUnitId);
-  light_image.set_image_type(backdrop::Image::IMAGE_TYPE_LIGHT_MODE);
-  light_image.set_image_url(kLightUrl);
-  images.push_back(light_image);
-
-  backdrop::Image morning_image;
-  morning_image.set_asset_id(kMorningAssetId);
-  morning_image.set_unit_id(kUnitId);
-  morning_image.set_image_type(backdrop::Image::IMAGE_TYPE_MORNING_MODE);
-  morning_image.set_image_url(kMorningUrl);
-  images.push_back(morning_image);
-
-  backdrop::Image late_afternoon_image;
-  late_afternoon_image.set_asset_id(kLateAfternoonAssetId);
-  late_afternoon_image.set_unit_id(kUnitId);
-  late_afternoon_image.set_image_type(
-      backdrop::Image::IMAGE_TYPE_LATE_AFTERNOON_MODE);
-  late_afternoon_image.set_image_url(kLateAfternoonUrl);
-  images.push_back(late_afternoon_image);
-
-  backdrop::Image dark_image;
-  dark_image.set_asset_id(kDarkAssetId);
-  dark_image.set_unit_id(kUnitId);
-  dark_image.set_image_type(backdrop::Image::IMAGE_TYPE_DARK_MODE);
-  dark_image.set_image_url(kDarkUrl);
-  images.push_back(dark_image);
-
+  std::vector<backdrop::Image> images = TimeOfDayImageSet();
   client_.AddCollection(kCollectionId, images);
 
-  WallpaperInfo info(kLightUrl, WallpaperLayout::WALLPAPER_LAYOUT_CENTER,
+  WallpaperInfo info(images[0].image_url(),
+                     WallpaperLayout::WALLPAPER_LAYOUT_CENTER,
                      WallpaperType::kOnline, base::Time::Now());
   info.collection_id = kCollectionId;
   const std::map<ScheduleCheckpoint, std::string> expected_mapping = {
-      {ScheduleCheckpoint::kSunrise, kLightUrl},
-      {ScheduleCheckpoint::kMorning, kMorningUrl},
-      {ScheduleCheckpoint::kLateAfternoon, kLateAfternoonUrl},
-      {ScheduleCheckpoint::kSunset, kDarkUrl}};
+      {ScheduleCheckpoint::kSunrise, images[0].image_url()},
+      {ScheduleCheckpoint::kMorning, images[1].image_url()},
+      {ScheduleCheckpoint::kLateAfternoon, images[2].image_url()},
+      {ScheduleCheckpoint::kSunset, images[3].image_url()}};
 
   for (const auto& mapping_pair : expected_mapping) {
     base::test::TestFuture<absl::optional<OnlineWallpaperParams>> test_future;
@@ -242,6 +225,50 @@
   }
 }
 
+// Verify that time of day variants with matching unit id are matched with the
+// right checkpoints.
+TEST_F(OnlineWallpaperVariantInfoFetcherTest, FetchTimeOfDayWallpaper) {
+  auto images = TimeOfDayImageSet();
+  client_.AddCollection(wallpaper_constants::kTimeOfDayWallpaperCollectionId,
+                        images);
+
+  const std::map<ScheduleCheckpoint, std::string> expected_mapping = {
+      {ScheduleCheckpoint::kSunrise, images[0].image_url()},
+      {ScheduleCheckpoint::kMorning, images[1].image_url()},
+      {ScheduleCheckpoint::kLateAfternoon, images[2].image_url()},
+      {ScheduleCheckpoint::kSunset, images[3].image_url()}};
+
+  for (const auto& mapping_pair : expected_mapping) {
+    base::test::TestFuture<absl::optional<OnlineWallpaperParams>> test_future;
+
+    // Verifies that checkpoint and the variant matches.
+    wallpaper_fetcher_->FetchTimeOfDayWallpaper(kAccount1, images[0].unit_id(),
+                                                mapping_pair.first,
+                                                test_future.GetCallback());
+    auto result = test_future.Get();
+    EXPECT_TRUE(result);
+    EXPECT_EQ(4u, result->variants.size());
+    EXPECT_EQ(mapping_pair.second, result->url.spec());
+  }
+}
+
+// Verify requests for fetching time of day wallpapers fail with invalid unit
+// id.
+TEST_F(OnlineWallpaperVariantInfoFetcherTest,
+       FetchTimeOfDayWallpaper_InvalidUnitId) {
+  auto images = TimeOfDayImageSet();
+  client_.AddCollection(wallpaper_constants::kTimeOfDayWallpaperCollectionId,
+                        images);
+
+  base::test::TestFuture<absl::optional<OnlineWallpaperParams>> test_future;
+  // Verifies that checkpoint and the variant matches.
+  wallpaper_fetcher_->FetchTimeOfDayWallpaper(
+      kAccount1, 123, ScheduleCheckpoint::kLateAfternoon,
+      test_future.GetCallback());
+  auto result = test_future.Get();
+  EXPECT_FALSE(result);
+}
+
 // Verify that the request fails if there are no matching variants for dark
 // mode.
 TEST_F(OnlineWallpaperVariantInfoFetcherTest, FetchOnlineWallpaper_NoDarkMode) {
diff --git a/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard.cc b/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard.cc
index afe84251..9d1c3e21 100644
--- a/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard.cc
+++ b/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard.cc
@@ -12,6 +12,7 @@
 #include "ash/display/privacy_screen_controller.h"
 #include "ash/ime/ime_controller_impl.h"
 #include "ash/shell.h"
+#include "ash/system/diagnostics/mojom/input.mojom-shared.h"
 #include "ash/webui/diagnostics_ui/backend/input/input_data_provider.h"
 #include "ash/webui/diagnostics_ui/mojom/input_data_provider.mojom-shared.h"
 #include "base/check_op.h"
@@ -21,6 +22,7 @@
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "chromeos/ash/components/system/statistics_provider.h"
+#include "ui/events/ash/keyboard_capability.h"
 #include "ui/events/devices/input_device.h"
 #include "ui/events/keycodes/keyboard_codes_posix.h"
 #include "ui/events/ozone/evdev/event_device_info.h"
@@ -67,67 +69,6 @@
                                                     {KEY_F14, kFKey14},
                                                     {KEY_F15, kFKey15}});
 
-// Represents scancode value seen in scan code mapping received from
-// `EventRewriterAsh` which denotes that the FKey is missing on the
-// physical device.
-constexpr uint32_t kCustomScanCodeFKeyMissing = 0x00;
-
-// Mapping from keyboard scancodes to TopRowKeys (must be in scancode-sorted
-// order) for keyboards with custom top row layouts (vivaldi). This replicates
-// and should be identical to the mapping behaviour of ChromeOS: changes will
-// be needed if new AT scancodes or HID mappings are used in a top-row key,
-// likely added in ui/events/keycodes/dom/dom_code_data.inc.
-//
-// Note that there are currently no dedicated scancodes for kScreenMirror.
-constexpr auto kCustomScancodeMapping =
-    base::MakeFixedFlatMap<uint32_t, mojom::TopRowKey>({
-        // Scan code is only `kCustomScanCodeFKeyMissing` when the FKey is
-        // absent on the keyboard.
-        {kCustomScanCodeFKeyMissing, mojom::TopRowKey::kNone},
-
-        // Vivaldi-specific extended Set-1 AT-style scancodes.
-        {0x90, mojom::TopRowKey::kPreviousTrack},
-        {0x91, mojom::TopRowKey::kFullscreen},
-        {0x92, mojom::TopRowKey::kOverview},
-        {0x93, mojom::TopRowKey::kScreenshot},
-        {0x94, mojom::TopRowKey::kScreenBrightnessDown},
-        {0x95, mojom::TopRowKey::kScreenBrightnessUp},
-        {0x96, mojom::TopRowKey::kPrivacyScreenToggle},
-        {0x97, mojom::TopRowKey::kKeyboardBacklightDown},
-        {0x98, mojom::TopRowKey::kKeyboardBacklightUp},
-        {0x99, mojom::TopRowKey::kNextTrack},
-        {0x9A, mojom::TopRowKey::kPlayPause},
-        {0x9B, mojom::TopRowKey::kMicrophoneMute},
-        {0x9E, mojom::TopRowKey::kKeyboardBacklightToggle},
-        {0xA0, mojom::TopRowKey::kVolumeMute},
-        {0xAE, mojom::TopRowKey::kVolumeDown},
-        {0xB0, mojom::TopRowKey::kVolumeUp},
-        {0xE9, mojom::TopRowKey::kForward},
-        {0xEA, mojom::TopRowKey::kBack},
-        {0xE7, mojom::TopRowKey::kRefresh},
-
-        // HID 32-bit usage codes
-        {0x070046, mojom::TopRowKey::kScreenshot},
-        {0x0B002F, mojom::TopRowKey::kMicrophoneMute},
-        {0x0C00E2, mojom::TopRowKey::kVolumeMute},
-        {0x0C00E9, mojom::TopRowKey::kVolumeUp},
-        {0x0C00EA, mojom::TopRowKey::kVolumeDown},
-        {0x0C006F, mojom::TopRowKey::kScreenBrightnessUp},
-        {0x0C0070, mojom::TopRowKey::kScreenBrightnessDown},
-        {0x0C0079, mojom::TopRowKey::kKeyboardBacklightUp},
-        {0x0C007A, mojom::TopRowKey::kKeyboardBacklightDown},
-        {0x0C007C, mojom::TopRowKey::kKeyboardBacklightToggle},
-        {0x0C00B5, mojom::TopRowKey::kNextTrack},
-        {0x0C00B6, mojom::TopRowKey::kPreviousTrack},
-        {0x0C00CD, mojom::TopRowKey::kPlayPause},
-        {0x0C0224, mojom::TopRowKey::kBack},
-        {0x0C0225, mojom::TopRowKey::kForward},
-        {0x0C0227, mojom::TopRowKey::kRefresh},
-        {0x0C0232, mojom::TopRowKey::kFullscreen},
-        {0x0C029F, mojom::TopRowKey::kOverview},
-        {0x0C02D0, mojom::TopRowKey::kPrivacyScreenToggle},
-    });
-
 // Hard-coded top-row key mappings. These are intended to match the behaviour of
 // EventRewriterAsh::RewriteFunctionKeys for historical keyboards. No
 // updates should be needed, as all new keyboards are expected to be using
@@ -259,6 +200,57 @@
   return std::string(layout_string.value());
 }
 
+constexpr mojom::TopRowKey ConvertTopRowActionKeyToDiagnosticsTopRowKey(
+    ui::TopRowActionKey action_key) {
+  switch (action_key) {
+    case ui::TopRowActionKey::kBack:
+      return mojom::TopRowKey::kBack;
+    case ui::TopRowActionKey::kForward:
+      return mojom::TopRowKey::kForward;
+    case ui::TopRowActionKey::kRefresh:
+      return mojom::TopRowKey::kRefresh;
+    case ui::TopRowActionKey::kFullscreen:
+      return mojom::TopRowKey::kFullscreen;
+    case ui::TopRowActionKey::kOverview:
+      return mojom::TopRowKey::kOverview;
+    case ui::TopRowActionKey::kScreenshot:
+      return mojom::TopRowKey::kScreenshot;
+    case ui::TopRowActionKey::kScreenBrightnessDown:
+      return mojom::TopRowKey::kScreenBrightnessDown;
+    case ui::TopRowActionKey::kScreenBrightnessUp:
+      return mojom::TopRowKey::kScreenBrightnessUp;
+    case ui::TopRowActionKey::kMicrophoneMute:
+      return mojom::TopRowKey::kMicrophoneMute;
+    case ui::TopRowActionKey::kVolumeMute:
+      return mojom::TopRowKey::kVolumeMute;
+    case ui::TopRowActionKey::kVolumeDown:
+      return mojom::TopRowKey::kVolumeDown;
+    case ui::TopRowActionKey::kVolumeUp:
+      return mojom::TopRowKey::kVolumeUp;
+    case ui::TopRowActionKey::kKeyboardBacklightToggle:
+      return mojom::TopRowKey::kKeyboardBacklightToggle;
+    case ui::TopRowActionKey::kKeyboardBacklightDown:
+      return mojom::TopRowKey::kKeyboardBacklightDown;
+    case ui::TopRowActionKey::kKeyboardBacklightUp:
+      return mojom::TopRowKey::kKeyboardBacklightUp;
+    case ui::TopRowActionKey::kNextTrack:
+      return mojom::TopRowKey::kNextTrack;
+    case ui::TopRowActionKey::kPreviousTrack:
+      return mojom::TopRowKey::kPreviousTrack;
+    case ui::TopRowActionKey::kPlayPause:
+      return mojom::TopRowKey::kPlayPause;
+    case ui::TopRowActionKey::kPrivacyScreenToggle:
+      return mojom::TopRowKey::kPrivacyScreenToggle;
+    case ui::TopRowActionKey::kAllApplications:
+    case ui::TopRowActionKey::kEmojiPicker:
+    case ui::TopRowActionKey::kDictation:
+    case ui::TopRowActionKey::kUnknown:
+      return mojom::TopRowKey::kUnknown;
+    case ui::TopRowActionKey::kNone:
+      return mojom::TopRowKey::kNone;
+  }
+}
+
 }  // namespace
 
 InputDataProviderKeyboard::InputDataProviderKeyboard() {}
@@ -314,24 +306,31 @@
 
     case ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom: {
       top_row_keys.reserve(top_row_scan_codes.size());
-      size_t index = 0;
-      for (const auto& scancode : top_row_scan_codes) {
-        // Skip all scancodes which map to kNone keys. This is most likely a
-        // result of an absent FKey (ex: Skipped FKeys on top row).
-        if (kCustomScancodeMapping.contains(scancode)) {
-          const auto& top_row_key = kCustomScancodeMapping.at(scancode);
-          if (top_row_key == mojom::TopRowKey::kNone) {
-            continue;
-          }
-          top_row_keys.push_back(top_row_key);
-        } else {
-          top_row_keys.push_back(mojom::TopRowKey::kUnknown);
-        }
 
-        top_row_key_scancode_indexes[scancode] = index++;
+      // If action keys cannot be found or if it has a different size than the
+      // top row scan codes, do not fill out the arrays.
+      // This will only happen if there is an error in `KeyboardCapability`.
+      const auto* action_keys =
+          Shell::Get()->keyboard_capability()->GetTopRowActionKeys(
+              ui::KeyboardDevice(device_info->input_device));
+      if (!action_keys || action_keys->size() != top_row_scan_codes.size()) {
+        break;
+      }
+
+      // Exclude all top row keys which are considered `kNone`.
+      size_t index = 0;
+      for (size_t i = 0; i < top_row_scan_codes.size(); i++) {
+        auto top_row_key =
+            ConvertTopRowActionKeyToDiagnosticsTopRowKey((*action_keys)[i]);
+        if (top_row_key == mojom::TopRowKey::kNone) {
+          continue;
+        }
+        top_row_keys.push_back(top_row_key);
+        top_row_key_scancode_indexes[top_row_scan_codes[i]] = index++;
       }
       break;
     }
+
     case ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayout2:
       top_row_keys.assign(std::begin(kSystemKeys2), std::end(kSystemKeys2));
       // No specific top_row_key_scancode_indexes are needed
diff --git a/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard_unittest.cc b/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard_unittest.cc
index 5036e93..b3598d9 100644
--- a/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard_unittest.cc
+++ b/ash/webui/diagnostics_ui/backend/input/input_data_provider_keyboard_unittest.cc
@@ -22,6 +22,7 @@
 #include "content/public/test/browser_task_environment.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/events/ash/event_rewriter_ash.h"
+#include "ui/events/ash/keyboard_capability.h"
 #include "ui/events/event.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/dom_key.h"
@@ -175,55 +176,66 @@
 
   void AddTopRowKey(VivaldiTopRowScanCode scancode,
                     ui::KeyboardCode key_code,
-                    mojom::TopRowKey top_row_key) {
+                    mojom::TopRowKey top_row_key,
+                    ui::TopRowActionKey action_key) {
     top_row_scan_codes_.push_back(scancode);
     top_row_keys_.push_back(top_row_key);
+    action_keys.push_back(action_key);
   }
 
   void PopulateCustomScanCodeSet1() {
     AddTopRowKey(VivaldiTopRowScanCode::kBack, ui::VKEY_F1,
-                 mojom::TopRowKey::kBack);
+                 mojom::TopRowKey::kBack, ui::TopRowActionKey::kBack);
     AddTopRowKey(VivaldiTopRowScanCode::kRefresh, ui::VKEY_F2,
-                 mojom::TopRowKey::kRefresh);
+                 mojom::TopRowKey::kRefresh, ui::TopRowActionKey::kRefresh);
     AddTopRowKey(VivaldiTopRowScanCode::kFullscreen, ui::VKEY_F3,
-                 mojom::TopRowKey::kFullscreen);
+                 mojom::TopRowKey::kFullscreen,
+                 ui::TopRowActionKey::kFullscreen);
     AddTopRowKey(VivaldiTopRowScanCode::kOverview, ui::VKEY_F4,
-                 mojom::TopRowKey::kOverview);
+                 mojom::TopRowKey::kOverview, ui::TopRowActionKey::kOverview);
     AddTopRowKey(VivaldiTopRowScanCode::kScreenshot, ui::VKEY_F5,
-                 mojom::TopRowKey::kScreenshot);
+                 mojom::TopRowKey::kScreenshot,
+                 ui::TopRowActionKey::kScreenshot);
     AddTopRowKey(VivaldiTopRowScanCode::kScreenBrightnessUp, ui::VKEY_F6,
-                 mojom::TopRowKey::kScreenBrightnessUp);
+                 mojom::TopRowKey::kScreenBrightnessUp,
+                 ui::TopRowActionKey::kScreenBrightnessUp);
     AddTopRowKey(VivaldiTopRowScanCode::kScreenBrightnessDown, ui::VKEY_F7,
-                 mojom::TopRowKey::kScreenBrightnessDown);
-    AddTopRowKey(VivaldiTopRowScanCode::kPrivacyScreenToggle, ui::VKEY_F8,
-                 mojom::TopRowKey::kPrivacyScreenToggle);
-    AddTopRowKey(VivaldiTopRowScanCode::kKeyboardBacklightUp, ui::VKEY_F9,
-                 mojom::TopRowKey::kKeyboardBacklightUp);
-    AddTopRowKey(VivaldiTopRowScanCode::kKeyboardBacklightDown, ui::VKEY_F10,
-                 mojom::TopRowKey::kKeyboardBacklightDown);
-    AddTopRowKey(VivaldiTopRowScanCode::kKeyboardBacklightToggle, ui::VKEY_F11,
-                 mojom::TopRowKey::kKeyboardBacklightToggle);
-    AddTopRowKey(VivaldiTopRowScanCode::kNextTrack, ui::VKEY_F12,
-                 mojom::TopRowKey::kNextTrack);
-    AddTopRowKey(VivaldiTopRowScanCode::kPreviousTrack, ui::VKEY_F13,
-                 mojom::TopRowKey::kPreviousTrack);
-    AddTopRowKey(VivaldiTopRowScanCode::kPlayPause, ui::VKEY_F14,
-                 mojom::TopRowKey::kPlayPause);
-    AddTopRowKey(VivaldiTopRowScanCode::kMicrophoneMute, ui::VKEY_F15,
-                 mojom::TopRowKey::kMicrophoneMute);
+                 mojom::TopRowKey::kScreenBrightnessDown,
+                 ui::TopRowActionKey::kScreenBrightnessDown);
+    AddTopRowKey(VivaldiTopRowScanCode::kKeyboardBacklightUp, ui::VKEY_F8,
+                 mojom::TopRowKey::kKeyboardBacklightUp,
+                 ui::TopRowActionKey::kKeyboardBacklightUp);
+    AddTopRowKey(VivaldiTopRowScanCode::kKeyboardBacklightDown, ui::VKEY_F9,
+                 mojom::TopRowKey::kKeyboardBacklightDown,
+                 ui::TopRowActionKey::kKeyboardBacklightDown);
+    AddTopRowKey(VivaldiTopRowScanCode::kKeyboardBacklightToggle, ui::VKEY_F10,
+                 mojom::TopRowKey::kKeyboardBacklightToggle,
+                 ui::TopRowActionKey::kKeyboardBacklightToggle);
+    AddTopRowKey(VivaldiTopRowScanCode::kNextTrack, ui::VKEY_F11,
+                 mojom::TopRowKey::kNextTrack, ui::TopRowActionKey::kNextTrack);
+    AddTopRowKey(VivaldiTopRowScanCode::kPreviousTrack, ui::VKEY_F12,
+                 mojom::TopRowKey::kPreviousTrack,
+                 ui::TopRowActionKey::kPreviousTrack);
+    AddTopRowKey(VivaldiTopRowScanCode::kPlayPause, ui::VKEY_F13,
+                 mojom::TopRowKey::kPlayPause, ui::TopRowActionKey::kPlayPause);
+    AddTopRowKey(VivaldiTopRowScanCode::kMicrophoneMute, ui::VKEY_F14,
+                 mojom::TopRowKey::kMicrophoneMute,
+                 ui::TopRowActionKey::kMicrophoneMute);
 
     device_information.keyboard_scan_codes = top_row_scan_codes_;
   }
 
   void PopulateCustomScanCodeSet2() {
     AddTopRowKey(VivaldiTopRowScanCode::kVolumeMute, ui::VKEY_F1,
-                 mojom::TopRowKey::kVolumeMute);
+                 mojom::TopRowKey::kVolumeMute,
+                 ui::TopRowActionKey::kVolumeMute);
     AddTopRowKey(VivaldiTopRowScanCode::kVolumeDown, ui::VKEY_F2,
-                 mojom::TopRowKey::kVolumeDown);
+                 mojom::TopRowKey::kVolumeDown,
+                 ui::TopRowActionKey::kVolumeDown);
     AddTopRowKey(VivaldiTopRowScanCode::kVolumeUp, ui::VKEY_F3,
-                 mojom::TopRowKey::kVolumeUp);
+                 mojom::TopRowKey::kVolumeUp, ui::TopRowActionKey::kVolumeUp);
     AddTopRowKey(VivaldiTopRowScanCode::kForward, ui::VKEY_F4,
-                 mojom::TopRowKey::kForward);
+                 mojom::TopRowKey::kForward, ui::TopRowActionKey::kForward);
 
     device_information.keyboard_scan_codes = top_row_scan_codes_;
   }
@@ -231,10 +243,22 @@
  protected:
   std::vector<uint32_t> top_row_scan_codes_;
   std::vector<mojom::TopRowKey> top_row_keys_;
+  std::vector<ui::TopRowActionKey> action_keys;
 };
 
 TEST_F(VivaldiKeyboardTestBase, ScanCodeIndexesSet1) {
   PopulateCustomScanCodeSet1();
+
+  ui::KeyboardCapability::KeyboardInfo info;
+  info.top_row_scan_codes = top_row_scan_codes_;
+  info.top_row_action_keys = action_keys;
+  info.device_type =
+      ui::KeyboardCapability::DeviceType::kDeviceInternalKeyboard;
+  info.top_row_layout =
+      ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom;
+  Shell::Get()->keyboard_capability()->SetKeyboardInfoForTesting(
+      ui::KeyboardDevice(device_information.input_device), std::move(info));
+
   keyboard_info_ = input_data_provider_keyboard_->ConstructKeyboard(
       &device_information, &aux_data_);
 
@@ -249,6 +273,17 @@
 
 TEST_F(VivaldiKeyboardTestBase, ScanCodeIndexesSet2) {
   PopulateCustomScanCodeSet2();
+
+  ui::KeyboardCapability::KeyboardInfo info;
+  info.top_row_scan_codes = top_row_scan_codes_;
+  info.top_row_action_keys = action_keys;
+  info.device_type =
+      ui::KeyboardCapability::DeviceType::kDeviceInternalKeyboard;
+  info.top_row_layout =
+      ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom;
+  Shell::Get()->keyboard_capability()->SetKeyboardInfoForTesting(
+      ui::KeyboardDevice(device_information.input_device), std::move(info));
+
   keyboard_info_ = input_data_provider_keyboard_->ConstructKeyboard(
       &device_information, &aux_data_);
 
@@ -267,23 +302,37 @@
   // Example here:
   // https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform/release-firmware/fpmcu-nami/board/taniks/keyboard.c;l=40-42;drc=64643a516e916d94e8956a4beb00df709a3efe21
   AddTopRowKey(VivaldiTopRowScanCode::kBack, ui::VKEY_F1,
-               mojom::TopRowKey::kBack);
+               mojom::TopRowKey::kBack, ui::TopRowActionKey::kBack);
   AddTopRowKey(VivaldiTopRowScanCode::kRefresh, ui::VKEY_F2,
-               mojom::TopRowKey::kRefresh);
+               mojom::TopRowKey::kRefresh, ui::TopRowActionKey::kRefresh);
   // Populate with TK_ABSENT for F3-F5
   top_row_scan_codes_.push_back(0);
+  action_keys.push_back(ui::TopRowActionKey::kNone);
   top_row_scan_codes_.push_back(0);
+  action_keys.push_back(ui::TopRowActionKey::kNone);
   top_row_scan_codes_.push_back(0);
+  action_keys.push_back(ui::TopRowActionKey::kNone);
   AddTopRowKey(VivaldiTopRowScanCode::kFullscreen, ui::VKEY_F6,
-               mojom::TopRowKey::kFullscreen);
+               mojom::TopRowKey::kFullscreen, ui::TopRowActionKey::kFullscreen);
+
+  ui::KeyboardCapability::KeyboardInfo info;
+  info.top_row_scan_codes = top_row_scan_codes_;
+  info.top_row_action_keys = action_keys;
+  info.device_type =
+      ui::KeyboardCapability::DeviceType::kDeviceInternalKeyboard;
+  info.top_row_layout =
+      ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom;
+  Shell::Get()->keyboard_capability()->SetKeyboardInfoForTesting(
+      ui::KeyboardDevice(device_information.input_device), std::move(info));
+
   device_information.keyboard_scan_codes = top_row_scan_codes_;
 
   keyboard_info_ = input_data_provider_keyboard_->ConstructKeyboard(
       &device_information, &aux_data_);
 
   // In the input map, we have Back, Refresh, and Fullscreen in the correct
-  // order, but spaced out with a gap from F3-F5. This gap should be removed as
-  // a gap in the input map implies the keys do not exist.
+  // order, but spaced out with a gap from F3-F5. This gap should be removed
+  // as a gap in the input map implies the keys do not exist.
   EXPECT_EQ(0u, aux_data_.top_row_key_scancode_indexes[kBack]);
   EXPECT_EQ(1u, aux_data_.top_row_key_scancode_indexes[kRefresh]);
   EXPECT_EQ(2u, aux_data_.top_row_key_scancode_indexes[kFullscreen]);
diff --git a/ash/webui/diagnostics_ui/backend/input/input_data_provider_unittest.cc b/ash/webui/diagnostics_ui/backend/input/input_data_provider_unittest.cc
index 098e4ef4..eb022ae 100644
--- a/ash/webui/diagnostics_ui/backend/input/input_data_provider_unittest.cc
+++ b/ash/webui/diagnostics_ui/backend/input/input_data_provider_unittest.cc
@@ -55,6 +55,8 @@
 #include "ui/events/ash/keyboard_capability.h"
 #include "ui/events/devices/device_data_manager.h"
 #include "ui/events/devices/device_data_manager_test_api.h"
+#include "ui/events/devices/input_device.h"
+#include "ui/events/devices/keyboard_device.h"
 #include "ui/events/devices/touch_device_transform.h"
 #include "ui/events/devices/touchscreen_device.h"
 #include "ui/events/keycodes/dom/dom_code.h"
@@ -109,6 +111,21 @@
     mojom::TopRowKey::kVolumeDown,
     mojom::TopRowKey::kVolumeUp};
 
+constexpr ui::TopRowActionKey kInternalJinlonActionKeys[] = {
+    ui::TopRowActionKey::kBack,
+    ui::TopRowActionKey::kRefresh,
+    ui::TopRowActionKey::kFullscreen,
+    ui::TopRowActionKey::kOverview,
+    ui::TopRowActionKey::kScreenshot,
+    ui::TopRowActionKey::kScreenBrightnessDown,
+    ui::TopRowActionKey::kScreenBrightnessUp,
+    ui::TopRowActionKey::kPrivacyScreenToggle,
+    ui::TopRowActionKey::kKeyboardBacklightDown,
+    ui::TopRowActionKey::kKeyboardBacklightUp,
+    ui::TopRowActionKey::kVolumeMute,
+    ui::TopRowActionKey::kVolumeDown,
+    ui::TopRowActionKey::kVolumeUp};
+
 // One possible variant of a Dell configuration
 constexpr mojom::TopRowKey kInternalDellTopRowKeys[] = {
     mojom::TopRowKey::kBack,
@@ -437,6 +454,7 @@
     ui::DeviceCapabilities device_caps;
     const std::string base_name = path.BaseName().value();
     auto info = std::make_unique<InputDeviceInformation>();
+    std::unique_ptr<ui::KeyboardCapability::KeyboardInfo> keyboard_info;
 
     if (base_name == "event0") {
       device_caps = ui::kLinkKeyboard;
@@ -482,6 +500,16 @@
       info->keyboard_top_row_layout =
           ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom;
       info->keyboard_scan_codes = kInternalJinlonScanCodes;
+
+      keyboard_info = std::make_unique<ui::KeyboardCapability::KeyboardInfo>();
+      keyboard_info->device_type =
+          ui::KeyboardCapability::DeviceType::kDeviceInternalKeyboard;
+      keyboard_info->top_row_action_keys.assign(
+          std::begin(kInternalJinlonActionKeys),
+          std::end(kInternalJinlonActionKeys));
+      keyboard_info->top_row_layout =
+          ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom;
+      keyboard_info->top_row_scan_codes = kInternalJinlonScanCodes;
       EXPECT_EQ(7, id);
     } else if (base_name == "event8") {
       device_caps = ui::kMicrosoftBluetoothNumberPad;
@@ -511,6 +539,18 @@
       info->keyboard_scan_codes = kInternalJinlonScanCodes;
       // Set 0xC4 to be F8.
       info->keyboard_scan_codes[7] = 0xC4;
+
+      keyboard_info = std::make_unique<ui::KeyboardCapability::KeyboardInfo>();
+      keyboard_info->device_type =
+          ui::KeyboardCapability::DeviceType::kDeviceInternalKeyboard;
+      keyboard_info->top_row_action_keys.assign(
+          std::begin(kInternalJinlonActionKeys),
+          std::end(kInternalJinlonActionKeys));
+      keyboard_info->top_row_layout =
+          ui::KeyboardCapability::KeyboardTopRowLayout::kKbdTopRowLayoutCustom;
+      keyboard_info->top_row_scan_codes = kInternalJinlonScanCodes;
+      keyboard_info->top_row_scan_codes[7] = 0xC4;
+      keyboard_info->top_row_action_keys[7] = ui::TopRowActionKey::kUnknown;
       EXPECT_EQ(11, id);
     } else if (base_name == "event12") {
       device_caps = ui::kMorphiusTabletModeSwitch;
@@ -547,6 +587,14 @@
         InputDataProvider::ConnectionTypeFromInputDeviceType(
             info->event_device_info.device_type());
 
+    if (keyboard_info) {
+      Shell::Get()
+          ->keyboard_capability()
+          ->DisableKeyboardInfoTrimmingForTesting();
+      Shell::Get()->keyboard_capability()->SetKeyboardInfoForTesting(
+          ui::KeyboardDevice(info->input_device), std::move(*keyboard_info));
+    }
+
     return info;
   }
 };
@@ -584,7 +632,7 @@
   bool NotifyDeprecatedSixPackKeyRewrite(ui::KeyboardCode key_code) override {
     return false;
   }
-  void RecordEventRemappedToRightClick() override {}
+  void RecordEventRemappedToRightClick(bool alt_based_right_click) override {}
   void RecordSixPackEventRewrite(ui::KeyboardCode key_code,
                                  bool alt_based) override {}
 
diff --git a/ash/webui/personalization_app/resources/js/wallpaper/wallpaper_collections_element.ts b/ash/webui/personalization_app/resources/js/wallpaper/wallpaper_collections_element.ts
index af261be..6dc56328 100644
--- a/ash/webui/personalization_app/resources/js/wallpaper/wallpaper_collections_element.ts
+++ b/ash/webui/personalization_app/resources/js/wallpaper/wallpaper_collections_element.ts
@@ -426,7 +426,9 @@
       this.tiles_ = this.tiles_.filter(tile => !isTimeOfDay(tile));
     }
 
-    this.splitCollections_ = {
+    // Delay assigning `this.splitCollections_` until the correct number of
+    // tiles are assigned.
+    const splitCollections = {
       regular: collections.filter(collection => !isTimeOfDay(collection)),
       timeOfDay,
     };
@@ -435,7 +437,7 @@
     // of day, local images, and google photos.
     const firstBackdropIndex = this.getFirstRegularBackdropTileIndex();
     const desiredNumTiles =
-        this.splitCollections_.regular.length + firstBackdropIndex;
+        splitCollections.regular.length + firstBackdropIndex;
 
     // Adjust the number of loading tiles to match the collections that just
     // came in.  There may be more (or fewer) loading tiles than necessary to
@@ -456,6 +458,10 @@
     if (this.tiles_.length > desiredNumTiles) {
       this.splice('tiles_', desiredNumTiles);
     }
+
+    // Assign `this.splitCollections_` now that
+    // `tiles_.length === desiredNumTiles`.
+    this.splitCollections_ = splitCollections;
   }
 
   /**
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc
index 81369c1..8fe36d0 100644
--- a/ash/wm/desks/desks_unittests.cc
+++ b/ash/wm/desks/desks_unittests.cc
@@ -4989,7 +4989,7 @@
   bool NotifyDeprecatedSixPackKeyRewrite(ui::KeyboardCode key_code) override {
     return false;
   }
-  void RecordEventRemappedToRightClick() override {}
+  void RecordEventRemappedToRightClick(bool alt_based_right_click) override {}
   void RecordSixPackEventRewrite(ui::KeyboardCode key_code,
                                  bool alt_based) override {}
 
@@ -9031,6 +9031,9 @@
 
 // Tests that we can go to saved desk library directly via desk button desk bar.
 TEST_P(DeskButtonTest, DeskBarLibraryButton) {
+  ui::ScopedAnimationDurationScaleMode animation_scale(
+      ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
+
   // Add a saved desk, so that the library button can show up.
   AddSavedDeskEntry(desk_model(), base::Uuid::GenerateRandomV4(),
                     "saved_desk_1", base::Time::Now(),
diff --git a/ash/wm/float/float_controller.h b/ash/wm/float/float_controller.h
index 6b9d1204e..48182a3 100644
--- a/ash/wm/float/float_controller.h
+++ b/ash/wm/float/float_controller.h
@@ -148,13 +148,10 @@
 
  private:
   class FloatedWindowInfo;
-  friend class DefaultState;
-  friend class TabletModeWindowState;
   friend class ClientControlledState;
-  friend class WindowFloatTest;
-  FRIEND_TEST_ALL_PREFIXES(WindowFloatMetricsTest, FloatWindowCountPerSession);
-  FRIEND_TEST_ALL_PREFIXES(WindowFloatMetricsTest,
-                           FloatWindowMovedToAnotherDeskCountPerSession);
+  friend class DefaultState;
+  friend class FloatTestApi;
+  friend class TabletModeWindowState;
 
   // Calls `FloatImpl()` and additionally updates the magnetism if needed.
   void FloatForTablet(aura::Window* window,
diff --git a/ash/wm/float/float_controller_unittest.cc b/ash/wm/float/float_controller_unittest.cc
index 10d0416..11bd5aa 100644
--- a/ash/wm/float/float_controller_unittest.cc
+++ b/ash/wm/float/float_controller_unittest.cc
@@ -22,6 +22,7 @@
 #include "ash/wm/desks/desks_test_api.h"
 #include "ash/wm/desks/desks_test_util.h"
 #include "ash/wm/desks/legacy_desk_bar_view.h"
+#include "ash/wm/float/float_test_api.h"
 #include "ash/wm/float/scoped_window_tucker.h"
 #include "ash/wm/float/tablet_mode_float_window_resizer.h"
 #include "ash/wm/float/tablet_mode_tuck_education.h"
@@ -890,7 +891,7 @@
   NewDesk();
   std::unique_ptr<aura::Window> window_2 = CreateFloatedWindow();
   // Check total counts.
-  EXPECT_EQ(Shell::Get()->float_controller()->floated_window_counter_, 3);
+  EXPECT_EQ(FloatTestApi::GetFloatedWindowCounter(), 3);
 }
 
 // Tests the float window moved to another desk counts.
@@ -924,12 +925,12 @@
   auto* float_controller = Shell::Get()->float_controller();
   ASSERT_EQ(float_controller->FindDeskOfFloatedWindow(window_1.get()), desk_2);
   // Check total counts, it should count 1.
-  EXPECT_EQ(float_controller->floated_window_move_to_another_desk_counter_, 1);
+  EXPECT_EQ(FloatTestApi::GetFloatedWindowMoveToAnotherDeskCounter(), 1);
   // Move to `desk_2` and remove `desk_2` by combine 2 desks.
   // Check total counts, it should count 2.
   ActivateDesk(desk_2);
   RemoveDesk(desk_2, DeskCloseType::kCombineDesks);
-  EXPECT_EQ(float_controller->floated_window_move_to_another_desk_counter_, 2);
+  EXPECT_EQ(FloatTestApi::GetFloatedWindowMoveToAnotherDeskCounter(), 2);
 }
 
 // Tests that the float window duration histogram is properly recorded.
diff --git a/ash/wm/float/float_test_api.cc b/ash/wm/float/float_test_api.cc
new file mode 100644
index 0000000..f26ad60
--- /dev/null
+++ b/ash/wm/float/float_test_api.cc
@@ -0,0 +1,24 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/wm/float/float_test_api.h"
+
+#include "ash/shell.h"
+#include "ash/wm/float/float_controller.h"
+
+namespace ash {
+
+// static
+int FloatTestApi::GetFloatedWindowCounter() {
+  return Shell::Get()->float_controller()->floated_window_counter_;
+}
+
+// static
+int FloatTestApi::GetFloatedWindowMoveToAnotherDeskCounter() {
+  return Shell::Get()
+      ->float_controller()
+      ->floated_window_move_to_another_desk_counter_;
+}
+
+}  // namespace ash
diff --git a/ash/wm/float/float_test_api.h b/ash/wm/float/float_test_api.h
new file mode 100644
index 0000000..e7ffef1
--- /dev/null
+++ b/ash/wm/float/float_test_api.h
@@ -0,0 +1,21 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_WM_FLOAT_FLOAT_TEST_API_H_
+#define ASH_WM_FLOAT_FLOAT_TEST_API_H_
+
+namespace ash {
+
+// Helper class used by tests to access FloatController's internal elements.
+class FloatTestApi {
+ public:
+  FloatTestApi() = delete;
+
+  static int GetFloatedWindowCounter();
+  static int GetFloatedWindowMoveToAnotherDeskCounter();
+};
+
+}  // namespace ash
+
+#endif  // ASH_WM_FLOAT_FLOAT_TEST_API_H_
diff --git a/ash/wm/overview/overview_grid.cc b/ash/wm/overview/overview_grid.cc
index 22bab119..f6259796 100644
--- a/ash/wm/overview/overview_grid.cc
+++ b/ash/wm/overview/overview_grid.cc
@@ -1821,6 +1821,14 @@
 
   UpdateSaveDeskButtons();
 
+  // If the overview desk bar is not created at this point, create it. This is
+  // only possible for clicking library button on the desk button desk bar,
+  // since for the overview desk bar, there has to be a bar before we can click
+  // on the library button.
+  if (!desks_widget_) {
+    MaybeInitDesksWidget();
+  }
+
   // When desks bar is at zero state, the library button's state update will be
   // handled by `UpdateNewMiniViews` when expanding the desks bar.
   if (desks_bar_view_->IsZeroState()) {
diff --git a/build/config/rust.gni b/build/config/rust.gni
index 0629d96..6f0837a 100644
--- a/build/config/rust.gni
+++ b/build/config/rust.gni
@@ -11,6 +11,10 @@
   import("//build/config/android/config.gni")
 }
 
+if (is_ios) {
+  import("//build/config/ios/config.gni")  # For `target_environment`
+}
+
 declare_args() {
   # Whether to allow Rust code to be part of the Chromium *build process*.
   # This can be used to create Rust test binaries, even if the flag below
@@ -206,7 +210,11 @@
   }
 } else if (is_ios) {
   if (current_cpu == "arm64") {
-    rust_abi_target = "aarch64-apple-ios"
+    if (target_environment == "simulator") {
+      rust_abi_target = "aarch64-apple-ios-sim"
+    } else {
+      rust_abi_target = "aarch64-apple-ios"
+    }
   } else if (current_cpu == "arm") {
     # There's also an armv7s-apple-ios, which targets a more recent ARMv7
     # generation CPU found in later iPhones. We'll go with the older one for
@@ -231,8 +239,10 @@
 } else if (is_win) {
   if (current_cpu == "arm64") {
     rust_abi_target = "aarch64-pc-windows-msvc"
-  } else if (current_cpu == "x86" || current_cpu == "x64") {
+  } else if (current_cpu == "x64") {
     rust_abi_target = "x86_64-pc-windows-msvc"
+  } else if (current_cpu == "x86") {
+    rust_abi_target = "i686-pc-windows-msvc"
   } else {
     assert(false, "Architecture not supported")
   }
diff --git a/build/sanitizers/lsan_suppressions.cc b/build/sanitizers/lsan_suppressions.cc
index 13ce3c4c..39e446d 100644
--- a/build/sanitizers/lsan_suppressions.cc
+++ b/build/sanitizers/lsan_suppressions.cc
@@ -63,6 +63,9 @@
     // Suppress leaks from unknown third party modules. http://anglebug.com/6937
     "leak:<unknown module>\n"
 
+    // Suppress leaks from temporary files. http://crbug.com/1433299
+    "leak:(deleted)\n"
+
     // ================ Leaks in Chromium code ================
     // PLEASE DO NOT ADD SUPPRESSIONS FOR NEW LEAKS.
     // Instead, commits that introduce memory leaks should be reverted.
diff --git a/build/toolchain/linux/BUILD.gn b/build/toolchain/linux/BUILD.gn
index 3d6bb56..2eefac5 100644
--- a/build/toolchain/linux/BUILD.gn
+++ b/build/toolchain/linux/BUILD.gn
@@ -215,7 +215,6 @@
     also_build_lacros_chrome = false
     chromeos_is_browser_only = true
     use_clang_coverage = false
-    dcheck_always_on = false
   }
 }
 
diff --git a/build/toolchain/win/toolchain.gni b/build/toolchain/win/toolchain.gni
index cb4e939c..cf8d8f6 100644
--- a/build/toolchain/win/toolchain.gni
+++ b/build/toolchain/win/toolchain.gni
@@ -444,8 +444,7 @@
 
     tool("alink") {
       rspfile = "{{output}}.rsp"
-      command =
-          "$linker_wrapper$lib /OUT:{{output}} /nologo {{arflags}} @$rspfile"
+      command = "$linker_wrapper$lib \"/OUT:{{output}}\" /nologo {{arflags}} \"@$rspfile\""
       description = "LIB {{output}}"
       outputs = [
         # Ignore {{output_extension}} and always use .lib, there's no reason to
@@ -468,7 +467,7 @@
       rspfile = "${dllname}.rsp"
       pool = "//build/toolchain:link_pool($default_toolchain)"
 
-      command = "$linker_wrapper$link /OUT:$dllname /nologo ${sys_lib_flags}/IMPLIB:$libname /DLL /PDB:$pdbname @$rspfile"
+      command = "$linker_wrapper$link \"/OUT:$dllname\" /nologo ${sys_lib_flags} \"/IMPLIB:$libname\" /DLL \"/PDB:$pdbname\" \"@$rspfile\""
 
       default_output_extension = ".dll"
       default_output_dir = "{{root_out_dir}}"
@@ -503,7 +502,7 @@
       rspfile = "${dllname}.rsp"
       pool = "//build/toolchain:link_pool($default_toolchain)"
 
-      command = "$linker_wrapper$link /OUT:$dllname /nologo ${sys_lib_flags}/DLL /PDB:$pdbname @$rspfile"
+      command = "$linker_wrapper$link \"/OUT:$dllname\" /nologo ${sys_lib_flags} /DLL \"/PDB:$pdbname\" \"@$rspfile\""
 
       default_output_extension = ".dll"
       default_output_dir = "{{root_out_dir}}"
@@ -526,7 +525,7 @@
       rspfile = "$exename.rsp"
       pool = "//build/toolchain:link_pool($default_toolchain)"
 
-      command = "$linker_wrapper$link /OUT:$exename /nologo ${sys_lib_flags} /PDB:$pdbname @$rspfile"
+      command = "$linker_wrapper$link \"/OUT:$exename\" /nologo ${sys_lib_flags} \"/PDB:$pdbname\" \"@$rspfile\""
 
       default_output_extension = ".exe"
       default_output_dir = "{{root_out_dir}}"
diff --git a/cc/mojo_embedder/async_layer_tree_frame_sink.cc b/cc/mojo_embedder/async_layer_tree_frame_sink.cc
index 09127f9a..10cef5fa 100644
--- a/cc/mojo_embedder/async_layer_tree_frame_sink.cc
+++ b/cc/mojo_embedder/async_layer_tree_frame_sink.cc
@@ -10,6 +10,7 @@
 #include "base/metrics/histogram.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/task/current_thread.h"
 #include "base/threading/platform_thread.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
@@ -51,6 +52,7 @@
                          std::move(params->compositor_task_runner),
                          params->gpu_memory_buffer_manager,
                          std::move(shared_image_interface)),
+      use_direct_client_receiver_(params->use_direct_client_receiver),
       synthetic_begin_frame_source_(
           std::move(params->synthetic_begin_frame_source)),
 #if BUILDFLAG(IS_ANDROID)
@@ -85,8 +87,15 @@
                        weak_factory_.GetWeakPtr()));
     compositor_frame_sink_ptr_ = compositor_frame_sink_associated_.get();
   }
-  client_receiver_.Bind(std::move(pipes_.client_receiver),
-                        compositor_task_runner_);
+
+  if (use_direct_client_receiver_ && base::CurrentIOThread::IsSet()) {
+    auto& receiver = client_receiver_.emplace<DirectClientReceiver>(
+        mojo::DirectReceiverKey{}, this);
+    receiver.Bind(std::move(pipes_.client_receiver));
+  } else {
+    auto& receiver = client_receiver_.emplace<ClientReceiver>(this);
+    receiver.Bind(std::move(pipes_.client_receiver), compositor_task_runner_);
+  }
 
   if (synthetic_begin_frame_source_) {
     client->SetBeginFrameSource(synthetic_begin_frame_source_.get());
@@ -119,7 +128,7 @@
   client_->SetBeginFrameSource(nullptr);
   begin_frame_source_.reset();
   synthetic_begin_frame_source_.reset();
-  client_receiver_.reset();
+  client_receiver_ = absl::monostate{};
   // `compositor_frame_sink_ptr_` points to either `compositor_frame_sink_` or
   // `compositor_frame_sink_associated_`, so it must be set to nullptr first.
   compositor_frame_sink_ptr_ = nullptr;
diff --git a/cc/mojo_embedder/async_layer_tree_frame_sink.h b/cc/mojo_embedder/async_layer_tree_frame_sink.h
index be7a286..3a2f830 100644
--- a/cc/mojo_embedder/async_layer_tree_frame_sink.h
+++ b/cc/mojo_embedder/async_layer_tree_frame_sink.h
@@ -25,12 +25,14 @@
 #include "components/viz/common/surfaces/surface_id.h"
 #include "gpu/ipc/client/client_shared_image_interface.h"
 #include "mojo/public/cpp/bindings/associated_remote.h"
+#include "mojo/public/cpp/bindings/direct_receiver.h"
 #include "mojo/public/cpp/bindings/pending_associated_remote.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "services/viz/public/mojom/compositing/compositor_frame_sink.mojom.h"
+#include "third_party/abseil-cpp/absl/types/variant.h"
 
 namespace cc {
 
@@ -74,6 +76,12 @@
     UnboundMessagePipes pipes;
     bool wants_animate_only_begin_frames = false;
     base::PlatformThreadId io_thread_id = base::kInvalidThreadId;
+
+    // If `true`, the CompositorFrameSinkClient receiver will receive IPC
+    // directly to the thread on which the AsyncLayerTreeFrameSink lives, rather
+    // than hopping through the I/O thread first. Only usable if the
+    // AsyncLayerTreeFrameSink lives on a thread which uses an IO message pump.
+    bool use_direct_client_receiver = false;
   };
 
   AsyncLayerTreeFrameSink(
@@ -126,6 +134,7 @@
   void OnMojoConnectionError(uint32_t custom_reason,
                              const std::string& description);
 
+  const bool use_direct_client_receiver_;
   bool begin_frames_paused_ = false;
   bool needs_begin_frames_ = false;
   viz::LocalSurfaceId local_surface_id_;
@@ -146,7 +155,12 @@
   // point to message pipe we want to use. It must be declared last and cleared
   // first.
   raw_ptr<viz::mojom::CompositorFrameSink> compositor_frame_sink_ptr_ = nullptr;
-  mojo::Receiver<viz::mojom::CompositorFrameSinkClient> client_receiver_{this};
+
+  using ClientReceiver = mojo::Receiver<viz::mojom::CompositorFrameSinkClient>;
+  using DirectClientReceiver =
+      mojo::DirectReceiver<viz::mojom::CompositorFrameSinkClient>;
+  absl::variant<absl::monostate, ClientReceiver, DirectClientReceiver>
+      client_receiver_;
 
   THREAD_CHECKER(thread_checker_);
   const bool wants_animate_only_begin_frames_;
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 7fe5222..c51ac1fa 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -1334,13 +1334,6 @@
   frame->has_view_transition_save_directive =
       active_tree_->HasViewTransitionSaveRequest();
 
-  // Damage rects for non-root passes aren't meaningful, so set them to be
-  // equal to the output rect.
-  for (size_t i = 0; i + 1 < frame->render_passes.size(); ++i) {
-    viz::CompositorRenderPass* pass = frame->render_passes[i].get();
-    pass->damage_rect = pass->output_rect;
-  }
-
   // When we are displaying the HUD, change the root damage rect to cover the
   // entire root surface. This will disable partial-swap/scissor optimizations
   // that would prevent the HUD from updating, since the HUD does not cause
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
index 1bbdd5f..3f10294b 100644
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -351,6 +351,7 @@
   "java/res/drawable/bg_circle_new_tab_button_folio.xml",
   "java/res/drawable/bg_tabstrip_tab_divider.xml",
   "java/res/drawable/bg_white_dialog.xml",
+  "java/res/drawable/blue_google_shield.xml",
   "java/res/drawable/bookmark_empty_state_illustration.xml",
   "java/res/drawable/bookmark_save_flow_ripple.xml",
   "java/res/drawable/bookmark_title_bar_shadow.xml",
@@ -372,6 +373,7 @@
   "java/res/drawable/distilled_page_pref_background.xml",
   "java/res/drawable/distilled_page_prefs_button_bg.xml",
   "java/res/drawable/google_pay_with_divider.xml",
+  "java/res/drawable/gray_shield.xml",
   "java/res/drawable/history_empty_state_illustration.xml",
   "java/res/drawable/ic_add_box_rounded_corner.xml",
   "java/res/drawable/ic_add_to_home_screen.xml",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index d1c57840..bffa72ea 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -157,6 +157,7 @@
   "java/src/org/chromium/chrome/browser/autofill/settings/CreditCardNumberFormattingTextWatcher.java",
   "java/src/org/chromium/chrome/browser/autofill/settings/VirtualCardEnrollmentFields.java",
   "java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchBridge.java",
+  "java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProvider.java",
   "java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTask.java",
   "java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTaskScheduler.java",
   "java/src/org/chromium/chrome/browser/background_sync/GooglePlayServicesChecker.java",
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni
index 290bbbfa..edb4dc07 100644
--- a/chrome/android/chrome_junit_test_java_sources.gni
+++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -1,5 +1,6 @@
 chrome_junit_test_java_sources = [
   "java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchBridgeTest.java",
+  "java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProviderTest.java",
   "java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionControllerTest.java",
   "java/src/org/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProviderTest.java",
   "java/src/org/chromium/chrome/browser/segmentation_platform/ReaderModeActionProviderTest.java",
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
index b35091be..01ed09f 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTabSwitcherTest.java
@@ -100,8 +100,7 @@
     Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
 @EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
     ChromeFeatureList.START_SURFACE_RETURN_TIME + "<Study,",
-    ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.INSTANT_START,
-    ChromeFeatureList.EMPTY_STATES})
+    ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.INSTANT_START})
 @Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
     UiRestriction.RESTRICTION_TYPE_PHONE})
 @DoNotBatch(reason = "This test suite tests startup behaviours and thus can't be batched.")
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
index 07a1a27..af14cf33 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
@@ -99,8 +99,7 @@
 @CommandLineFlags.
     Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
 @EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
-    ChromeFeatureList.START_SURFACE_ANDROID, ChromeFeatureList.INSTANT_START,
-    ChromeFeatureList.EMPTY_STATES})
+        ChromeFeatureList.START_SURFACE_ANDROID, ChromeFeatureList.INSTANT_START})
 @Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE,
     UiRestriction.RESTRICTION_TYPE_PHONE})
 @DoNotBatch(reason = "InstantStartTest tests startup behaviours and thus can't be batched.")
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
index c11613bf..1b3b0c0 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
@@ -78,8 +78,7 @@
 @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
 @Restriction(
         {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
-@EnableFeatures(
-        {ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.EMPTY_STATES})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
 @DoNotBatch(reason = "StartSurface*Test tests startup behaviours and thus can't be batched.")
 @CommandLineFlags.
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
@@ -122,6 +121,7 @@
     @Before
     public void setUp() throws IOException {
         StartSurfaceTestUtils.setUpStartSurfaceTests(mImmediateReturn, mActivityTestRule);
+
         mLayoutChangedCallbackHelper = new CallbackHelper();
 
         if (isInstantReturn()) {
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java
index 0ac0473..aeaa0bf4 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceMVTilesTest.java
@@ -77,8 +77,7 @@
 @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
 @Restriction(
         {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
-@EnableFeatures(
-        {ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.EMPTY_STATES})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
 @DoNotBatch(reason = "StartSurface*Test tests startup behaviours and thus can't be batched.")
 @CommandLineFlags.
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceOnTabletTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceOnTabletTest.java
index 754dae4e1..3aa17ae 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceOnTabletTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceOnTabletTest.java
@@ -19,10 +19,12 @@
 
 import org.hamcrest.Matchers;
 import org.junit.Assert;
+import org.junit.Assume;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import org.chromium.base.MathUtils;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Criteria;
 import org.chromium.base.test.util.CriteriaHelper;
@@ -38,6 +40,7 @@
 import org.chromium.chrome.browser.ntp.NewTabPage;
 import org.chromium.chrome.browser.ntp.NewTabPageLayout;
 import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCarouselLayout;
+import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator;
 import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout;
 import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesLayout;
 import org.chromium.chrome.browser.tab.Tab;
@@ -455,9 +458,11 @@
                 + res.getDimensionPixelSize(
                         org.chromium.chrome.R.dimen
                                 .mvt_container_to_ntp_right_extra_margin_two_feed_tablet)
-                + res.getDimensionPixelSize(org.chromium.chrome.R.dimen.tile_grid_layout_bleed);
+                + res.getDimensionPixelSize(org.chromium.chrome.R.dimen.tile_grid_layout_bleed) / 2
+                        * 2;
         int expectedContainerTwoSideMarginPortrait =
-                res.getDimensionPixelSize(org.chromium.chrome.R.dimen.tile_grid_layout_bleed)
+                res.getDimensionPixelSize(org.chromium.chrome.R.dimen.tile_grid_layout_bleed) / 2
+                        * 2
                 + res.getDimensionPixelSize(
                         org.chromium.chrome.R.dimen
                                 .mvt_container_to_ntp_right_extra_margin_two_feed_tablet);
@@ -467,13 +472,17 @@
 
         int expectedMvtBottomMargin = res.getDimensionPixelSize(
                 org.chromium.chrome.R.dimen.mvt_container_bottom_margin_tablet);
-        int expectedSingleTabCardTopAndBottomMargin = res.getDimensionPixelSize(
-                org.chromium.chrome.R.dimen
-                        .single_tab_card_top_and_bottom_margin_carousel_mvt_tablet);
+        int expectedSingleTabCardTopMargin = -res.getDimensionPixelSize(
+                org.chromium.chrome.R.dimen.single_tab_card_top_margin_tablet);
+        int expectedSingleTabCardBottomMargin =
+                res.getDimensionPixelOffset(
+                        org.chromium.chrome.R.dimen.single_tab_card_bottom_margin_tablet)
+                - res.getDimensionPixelOffset(
+                        org.chromium.chrome.R.dimen.feed_header_tab_list_view_top_bottom_margin);
         // Verifies the vertical margins of the module most visited tiles and single tab card are
         // correct.
         verifyMvtAndSingleTabCardVerticalMargins(expectedMvtBottomMargin,
-                -expectedSingleTabCardTopAndBottomMargin, expectedSingleTabCardTopAndBottomMargin,
+                expectedSingleTabCardTopMargin, expectedSingleTabCardBottomMargin,
                 /*isNtpHomepage=*/true, ntp);
     }
 
@@ -535,12 +544,17 @@
 
         int expectedMvtBottomMargin = res.getDimensionPixelSize(
                 org.chromium.chrome.R.dimen.mvt_container_bottom_margin_tablet);
-        int expectedSingleTabCardTopAndBottomMargin = res.getDimensionPixelSize(
-                org.chromium.chrome.R.dimen.single_tab_card_top_and_bottom_margin_grid_mvt_tablet);
+        int expectedSingleTabCardTopMargin = -res.getDimensionPixelSize(
+                org.chromium.chrome.R.dimen.single_tab_card_top_margin_tablet);
+        int expectedSingleTabCardBottomMargin =
+                res.getDimensionPixelOffset(
+                        org.chromium.chrome.R.dimen.single_tab_card_bottom_margin_tablet)
+                - res.getDimensionPixelOffset(
+                        org.chromium.chrome.R.dimen.feed_header_tab_list_view_top_bottom_margin);
         // Verifies the vertical margins of the module most visited tiles and single tab card are
         // correct.
         verifyMvtAndSingleTabCardVerticalMargins(expectedMvtBottomMargin,
-                -expectedSingleTabCardTopAndBottomMargin, expectedSingleTabCardTopAndBottomMargin,
+                expectedSingleTabCardTopMargin, expectedSingleTabCardBottomMargin,
                 /*isNtpHomepage=*/true, ntp);
     }
 
@@ -591,6 +605,7 @@
             int expectedContainerTwoSideMarginPortrait, int expectedEdgeMarginLandScape,
             int expectedEdgeMarginPortrait, boolean isScrollable, NewTabPage ntp) {
         NewTabPageLayout ntpLayout = ntp.getNewTabPageLayout();
+        Assume.assumeTrue(ntpLayout.getChildCount() >= 4);
         View mvTilesContainer =
                 ntpLayout.findViewById(org.chromium.chrome.test.R.id.mv_tiles_container);
         View mvTilesLayout = ntpLayout.findViewById(org.chromium.chrome.test.R.id.mv_tiles_layout);
@@ -643,7 +658,7 @@
 
         Assert.assertEquals("The container's margin with respect to the layout of the new tab "
                         + "page is incorrect.",
-                expectedContainerTwoSideMargin, ntpLayout.getWidth() - mvtContainerWidth);
+                expectedContainerTwoSideMargin, ntpLayout.getWidth() - mvtContainerWidth, 3);
 
         if (isScrollable) {
             Assert.assertTrue("The width of the most visited tiles layout is wrong.",
@@ -658,15 +673,26 @@
         } else {
             Assert.assertTrue("The width of the most visited tiles layout is wrong.",
                     mvtContainerWidth == mvTilesLayoutWidth);
-            Assert.assertEquals("The edge margin of the most visited tiles element to "
-                            + "the MV tiles layout is wrong.",
-                    mvt1LeftMargin, expectedEdgeMargin);
+            int minHorizontalSpacing = ((MostVisitedTilesGridLayout) mvTilesLayout)
+                                               .getMinHorizontalSpacingForTesting();
+            int maxHorizontalSpacing = ((MostVisitedTilesGridLayout) mvTilesLayout)
+                                               .getMaxHorizontalSpacingForTesting();
+            int numColumns = MathUtils.clamp((mvTilesLayoutWidth + minHorizontalSpacing)
+                            / (mvTilesItemWidth + minHorizontalSpacing),
+                    1, MostVisitedTilesCoordinator.MAX_TILE_COLUMNS_FOR_GRID);
             int expectedIntervalPadding =
-                    (mvTilesLayoutWidth - mvTilesItemWidth * 4 - expectedEdgeMargin * 2) / 3;
-            Assert.assertEquals(
-                    "The padding between each element of the most visited tiles is incorrect.",
-                    expectedIntervalPadding,
-                    mvt2LeftMargin - mvTilesItemWidth - expectedEdgeMargin);
+                    (mvTilesLayoutWidth - mvTilesItemWidth * numColumns - expectedEdgeMargin * 2)
+                    / (numColumns - 1);
+            if (expectedIntervalPadding >= minHorizontalSpacing
+                    && expectedIntervalPadding <= maxHorizontalSpacing) {
+                Assert.assertEquals("The edge margin of the most visited tiles element to "
+                                + "the MV tiles layout is wrong.",
+                        mvt1LeftMargin, expectedEdgeMargin);
+                Assert.assertEquals(
+                        "The padding between each element of the most visited tiles is incorrect.",
+                        expectedIntervalPadding,
+                        mvt2LeftMargin - mvTilesItemWidth - expectedEdgeMargin);
+            }
         }
     }
 
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
index 7630e7fd..ec565d3 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTabSwitcherTest.java
@@ -78,8 +78,7 @@
 @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
 @Restriction(
         {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
-@EnableFeatures(
-        {ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.EMPTY_STATES})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
 @DoNotBatch(reason = "StartSurface*Test tests startup behaviours and thus can't be batched.")
 @CommandLineFlags.
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
index faed1e6..f0f4c3f 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -116,8 +116,7 @@
 @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
 @Restriction(
         {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
-@EnableFeatures(
-        {ChromeFeatureList.START_SURFACE_ANDROID + "<Study", ChromeFeatureList.EMPTY_STATES})
+@EnableFeatures({ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
 @CommandLineFlags.
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
 @DoNotBatch(reason = "This test suite tests startup behaviors.")
diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn
index a0fc650..265c8e3e 100644
--- a/chrome/android/features/tab_ui/BUILD.gn
+++ b/chrome/android/features/tab_ui/BUILD.gn
@@ -41,7 +41,6 @@
     "java/res/drawable/ic_select_all_24dp.xml",
     "java/res/drawable/iph_drag_and_drop_animated_drawable.xml",
     "java/res/drawable/iph_drag_and_drop_drawable.xml",
-    "java/res/drawable/phone_tab_switcher_empty_state_illustration.xml",
     "java/res/drawable/price_card_background.xml",
     "java/res/drawable/price_card_scrim.xml",
     "java/res/drawable/selected_tab_background.xml",
@@ -55,7 +54,6 @@
     "java/res/drawable/tab_strip_favicon_circle.xml",
     "java/res/drawable/tab_strip_selected_ring.xml",
     "java/res/drawable/tab_strip_selected_ring_incognito.xml",
-    "java/res/drawable/tablet_tab_switcher_empty_state_illustration.xml",
     "java/res/drawable/tabstrip_favicon_background.xml",
     "java/res/drawable/ungroup_bar_background.xml",
     "java/res/layout/bottom_tab_grid_toolbar.xml",
diff --git a/chrome/android/features/tab_ui/java/res/drawable/phone_tab_switcher_empty_state_illustration.xml b/chrome/android/features/tab_ui/java/res/drawable/phone_tab_switcher_empty_state_illustration.xml
deleted file mode 100644
index ebad7060..0000000
--- a/chrome/android/features/tab_ui/java/res/drawable/phone_tab_switcher_empty_state_illustration.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2023 The Chromium Authors
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:autoMirrored="true"
-    android:height="130dp"
-    android:viewportHeight="130"
-    android:viewportWidth="130"
-    android:width="130dp">
-  <path
-      android:fillColor="@color/empty_state_icon_bg_color"
-      android:pathData="M84.07,67.58L53.87,37.38C44.1,27.6 51.02,10.9 64.84,10.9H100.76C104.87,10.9 108.82,12.53 111.73,15.44L123.97,27.68C130.03,33.74 130.03,43.56 123.97,49.62L106.01,67.58C99.95,73.64 90.13,73.64 84.07,67.58Z"/>
-  <path
-      android:fillColor="@color/empty_state_icon_bg_color"
-      android:pathData="M45.36,61.85L75.57,92.06C85.34,101.83 78.42,118.54 64.6,118.54H28.68C24.56,118.54 20.62,116.9 17.71,114L5.46,101.75C-0.59,95.69 -0.59,85.87 5.46,79.82L23.43,61.85C29.48,55.8 39.3,55.8 45.36,61.85Z"/>
-  <path
-      android:pathData="M94,41L94,99A3,3 0,0 1,91 102L50,102A3,3 0,0 1,47 99L47,41A3,3 0,0 1,50 38L91,38A3,3 0,0 1,94 41z"
-      android:strokeColor="@color/empty_state_icon_color"
-      android:strokeWidth="2"/>
-  <path
-      android:fillColor="@color/empty_state_icon_color"
-      android:fillType="evenOdd"
-      android:pathData="M50,37C47.79,37 46,38.79 46,41V45H95V41C95,38.79 93.21,37 91,37H50Z"/>
-  <path
-      android:fillColor="@color/empty_state_icon_bg_color"
-      android:pathData="M84,31L84,89A3,3 0,0 1,81 92L40,92A3,3 0,0 1,37 89L37,31A3,3 0,0 1,40 28L81,28A3,3 0,0 1,84 31z"
-      android:strokeColor="@color/empty_state_icon_color"
-      android:strokeWidth="2"/>
-  <path
-      android:fillColor="@color/empty_state_icon_color"
-      android:fillType="evenOdd"
-      android:pathData="M40,27C37.79,27 36,28.79 36,31V35H85V31C85,28.79 83.21,27 81,27H40Z"/>
-  <path
-      android:fillColor="@macro/default_bg_color_elev_0"
-      android:pathData="M40,29L42,29A1,1 0,0 1,43 30L43,32A1,1 0,0 1,42 33L40,33A1,1 0,0 1,39 32L39,30A1,1 0,0 1,40 29z"/>
-  <path
-      android:pathData="M81,30L79,32"
-      android:strokeColor="@macro/default_bg_color_elev_0"
-      android:strokeLineCap="round"
-      android:strokeWidth="2"/>
-  <path
-      android:pathData="M79,30L81,32"
-      android:strokeColor="@macro/default_bg_color_elev_0"
-      android:strokeLineCap="round"
-      android:strokeWidth="2"/>
-</vector>
diff --git a/chrome/android/features/tab_ui/java/res/drawable/tablet_tab_switcher_empty_state_illustration.xml b/chrome/android/features/tab_ui/java/res/drawable/tablet_tab_switcher_empty_state_illustration.xml
deleted file mode 100644
index 6420eb4..0000000
--- a/chrome/android/features/tab_ui/java/res/drawable/tablet_tab_switcher_empty_state_illustration.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright 2023 The Chromium Authors
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:autoMirrored="true"
-    android:height="130dp"
-    android:viewportHeight="130"
-    android:viewportWidth="130"
-    android:width="130dp">
-    <path
-        android:fillColor="@color/empty_state_icon_bg_color"
-        android:pathData="M74.19,76.52L31.3,33.63C20.9,23.23 28.27,5.46 42.97,5.46H93.87C98.25,5.46 102.45,7.2 105.54,10.29L122.98,27.73C129.43,34.17 129.43,44.62 122.98,51.07L97.53,76.52C91.08,82.96 80.64,82.96 74.19,76.52Z"/>
-    <path
-        android:fillColor="@color/empty_state_icon_bg_color"
-        android:pathData="M55.81,52.48L98.7,95.37C109.1,105.77 101.73,123.54 87.03,123.54H36.13C31.75,123.54 27.55,121.81 24.46,118.71L7.02,101.27C0.57,94.83 0.57,84.38 7.02,77.93L32.47,52.48C38.92,46.04 49.37,46.04 55.81,52.48Z"/>
-    <path
-        android:pathData="M52,57L110,57A3,3 0,0 1,113 60L113,101A3,3 0,0 1,110 104L52,104A3,3 0,0 1,49 101L49,60A3,3 0,0 1,52 57z"
-        android:strokeColor="@color/empty_state_icon_color"
-        android:strokeWidth="2"/>
-    <path
-        android:pathData="M52,56.5L110,56.5A3.5,3.5 0,0 1,113.5 60L113.5,101A3.5,3.5 0,0 1,110 104.5L52,104.5A3.5,3.5 0,0 1,48.5 101L48.5,60A3.5,3.5 0,0 1,52 56.5z"
-        android:strokeColor="@color/empty_state_icon_bg_color"
-        android:strokeWidth="1"/>
-    <path
-        android:fillColor="@color/empty_state_icon_color"
-        android:fillType="evenOdd"
-        android:pathData="M52,56C49.79,56 48,57.79 48,60V64H114V60C114,57.79 112.21,56 110,56H52Z"/>
-    <path
-        android:pathData="M20,25L78,25A3,3 0,0 1,81 28L81,69A3,3 0,0 1,78 72L20,72A3,3 0,0 1,17 69L17,28A3,3 0,0 1,20 25z"
-        android:strokeColor="@color/empty_state_icon_color"
-        android:strokeWidth="2"/>
-    <path
-        android:pathData="M20,24.5L78,24.5A3.5,3.5 0,0 1,81.5 28L81.5,69A3.5,3.5 0,0 1,78 72.5L20,72.5A3.5,3.5 0,0 1,16.5 69L16.5,28A3.5,3.5 0,0 1,20 24.5z"
-        android:strokeColor="@color/empty_state_icon_color"
-        android:strokeWidth="1"/>
-    <path
-        android:fillColor="@color/empty_state_icon_color"
-        android:fillType="evenOdd"
-        android:pathData="M20,24C17.79,24 16,25.79 16,28V32H82V28C82,25.79 80.21,24 78,24H20Z"/>
-    <path
-        android:pathData="M36,40.5L94,40.5A3.5,3.5 0,0 1,97.5 44L97.5,85A3.5,3.5 0,0 1,94 88.5L36,88.5A3.5,3.5 0,0 1,32.5 85L32.5,44A3.5,3.5 0,0 1,36 40.5z"
-        android:strokeColor="@color/empty_state_icon_color"
-        android:strokeWidth="1"/>
-    <path
-        android:fillColor="@color/empty_state_icon_tabswitcher_bg_color"
-        android:pathData="M36,41L94,41A3,3 0,0 1,97 44L97,85A3,3 0,0 1,94 88L36,88A3,3 0,0 1,33 85L33,44A3,3 0,0 1,36 41z"
-        android:strokeColor="@color/empty_state_icon_color"
-        android:strokeWidth="2"/>
-    <path
-        android:fillColor="@color/empty_state_icon_color"
-        android:fillType="evenOdd"
-        android:pathData="M36,40C33.79,40 32,41.79 32,44V48H98V44C98,41.79 96.21,40 94,40H36Z"/>
-    <path
-        android:fillColor="@macro/default_bg_color_elev_0"
-        android:pathData="M36,42L38,42A1,1 0,0 1,39 43L39,45A1,1 0,0 1,38 46L36,46A1,1 0,0 1,35 45L35,43A1,1 0,0 1,36 42z"/>
-    <path
-        android:pathData="M94,43L92,45"
-        android:strokeColor="@macro/default_bg_color_elev_0"
-        android:strokeLineCap="round"
-        android:strokeWidth="2"/>
-    <path
-        android:pathData="M92,43L94,45"
-        android:strokeColor="@macro/default_bg_color_elev_0"
-        android:strokeLineCap="round"
-        android:strokeWidth="2"/>
-</vector>
\ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
index 4213ca7..dcb4621 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
@@ -30,7 +30,6 @@
 
 import org.chromium.base.Callback;
 import org.chromium.base.TraceEvent;
-import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.lifecycle.DestroyObserver;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabUtils;
@@ -82,7 +81,6 @@
     static final int GRID_LAYOUT_SPAN_COUNT_LARGE = 4;
     static final int MAX_SCREEN_WIDTH_COMPACT_DP = 600;
     static final int MAX_SCREEN_WIDTH_MEDIUM_DP = 800;
-
     private final TabListMediator mMediator;
     private final TabListRecyclerView mRecyclerView;
     private final SimpleRecyclerViewAdapter mAdapter;
@@ -99,7 +97,6 @@
     private @Nullable TabStripSnapshotter mTabStripSnapshotter;
     private ItemTouchHelper mItemTouchHelper;
     private OnItemTouchListener mOnItemTouchListener;
-    private TabListEmptyCoordinator mTabListEmptyCoordinator;
 
     /**
      * Construct a coordinator for UI that shows a list of tabs.
@@ -144,7 +141,6 @@
         mModel = new TabListModel();
         mAdapter = new SimpleRecyclerViewAdapter(mModel);
         mRootView = rootView;
-
         RecyclerView.RecyclerListener recyclerListener = null;
         if (mMode == TabListMode.GRID || mMode == TabListMode.CAROUSEL) {
             mAdapter.registerType(UiType.SELECTABLE, parent -> {
@@ -223,10 +219,6 @@
                 selectionDelegateProvider, gridCardOnClickListenerProvider, dialogHandler,
                 priceWelcomeMessageController, componentName, itemType);
 
-        if (ChromeFeatureList.sEmptyStates.isEnabled()) {
-            mTabListEmptyCoordinator = new TabListEmptyCoordinator(rootView, mModel);
-        }
-
         try (TraceEvent e = TraceEvent.scoped("TabListCoordinator.setupRecyclerView")) {
             if (!attachToParent) {
                 mRecyclerView = (TabListRecyclerView) LayoutInflater.from(context).inflate(
@@ -538,9 +530,6 @@
     @Override
     public void onDestroy() {
         mMediator.destroy();
-        if (mTabListEmptyCoordinator != null) {
-            mTabListEmptyCoordinator.destroy();
-        }
         if (mListLayoutListener != null) {
             mRecyclerView.removeOnLayoutChangeListener(mListLayoutListener);
             mLayoutListenerRegistered = false;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java
deleted file mode 100644
index 170ea85..0000000
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.tasks.tab_management;
-
-import android.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import org.chromium.chrome.tab_ui.R;
-import org.chromium.ui.base.DeviceFormFactor;
-import org.chromium.ui.modelutil.ListObservable;
-import org.chromium.ui.modelutil.ListObservable.ListObserver;
-
-// @TODO(crbug.com/1442335) Add instrumentation test for TabListEmptyCoordinator class.
-public class TabListEmptyCoordinator {
-    private ViewGroup mRootView;
-    private View mEmptyView;
-    private Context mContext;
-    private TabListModel mModel;
-    private ListObserver<Void> mListObserver;
-
-    public TabListEmptyCoordinator(ViewGroup rootView, TabListModel model) {
-        mRootView = rootView;
-        mContext = rootView.getContext();
-
-        // Initialize tab switcher Empty State resources.
-        mEmptyView = (ViewGroup) android.view.LayoutInflater.from(mContext).inflate(
-                R.layout.empty_state_view, null);
-        TextView emptyStateHeading = mEmptyView.findViewById(R.id.empty_state_text_title);
-        TextView emptyStateSubheading = mEmptyView.findViewById(R.id.empty_state_text_description);
-        ImageView imageView = mEmptyView.findViewById(R.id.empty_state_icon);
-
-        // Set properties.
-        emptyStateHeading.setText(R.string.tabswitcher_no_tabs_empty_state);
-        emptyStateSubheading.setText(R.string.tabswitcher_no_tabs_open_to_visit_different_pages);
-
-        // Apply image illustrations based on form factors.
-        if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) {
-            imageView.setImageResource(R.drawable.tablet_tab_switcher_empty_state_illustration);
-        } else {
-            imageView.setImageResource(R.drawable.phone_tab_switcher_empty_state_illustration);
-        }
-
-        // Observe TabListModel to determine when to add / remove empty state view.
-        mModel = model;
-        mListObserver = new ListObserver<Void>() {
-            @Override
-            public void onItemRangeInserted(ListObservable source, int index, int count) {
-                updateEmptyView();
-            }
-
-            @Override
-            public void onItemRangeRemoved(ListObservable source, int index, int count) {
-                updateEmptyView();
-            }
-        };
-        mModel.addObserver(mListObserver);
-    }
-
-    private void updateEmptyView() {
-        boolean showEmptyView = mModel.size() == 0;
-        boolean isEmptyViewAttached = mEmptyView.getParent() != null;
-
-        if (showEmptyView && !isEmptyViewAttached) {
-            mRootView.addView(mEmptyView);
-        } else if (!showEmptyView && isEmptyViewAttached) {
-            mRootView.removeView(mEmptyView);
-        }
-    }
-
-    public void destroy() {
-        if (mListObserver != null) {
-            mModel.removeObserver(mListObserver);
-        }
-    }
-}
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherAndStartSurfaceLayoutTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherAndStartSurfaceLayoutTest.java
index f742aee..6129ba0 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherAndStartSurfaceLayoutTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherAndStartSurfaceLayoutTest.java
@@ -148,7 +148,6 @@
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
         "force-fieldtrials=Study/Group"})
 @EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + "<Study"})
-@DisableFeatures({ChromeFeatureList.EMPTY_STATES})
 @Restriction(
         {UiRestriction.RESTRICTION_TYPE_PHONE, Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE})
 public class TabSwitcherAndStartSurfaceLayoutTest {
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java
index da78b163a..488c9fa 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java
@@ -88,8 +88,8 @@
 @RunWith(ChromeJUnit4ClassRunner.class)
 @CommandLineFlags.
 Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "force-fieldtrials=Study/Group"})
-@EnableFeatures({ChromeFeatureList.TAB_STRIP_REDESIGN, ChromeFeatureList.EMPTY_STATES})
-@DisableFeatures({ChromeFeatureList.TAB_TO_GTS_ANIMATION})
+@EnableFeatures({ChromeFeatureList.TAB_STRIP_REDESIGN})
+@DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
 @Restriction(
         {Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE, UiRestriction.RESTRICTION_TYPE_TABLET})
 @Batch(Batch.PER_CLASS)
diff --git a/chrome/android/features/tab_ui/tab_management_java_sources.gni b/chrome/android/features/tab_ui/tab_management_java_sources.gni
index e5ed6c34..f9c89c77 100644
--- a/chrome/android/features/tab_ui/tab_management_java_sources.gni
+++ b/chrome/android/features/tab_ui/tab_management_java_sources.gni
@@ -67,7 +67,6 @@
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerProperties.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java",
-  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListModel.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java",
diff --git a/chrome/android/java/res/drawable/blue_google_shield.xml b/chrome/android/java/res/drawable/blue_google_shield.xml
new file mode 100644
index 0000000..59fdcbd
--- /dev/null
+++ b/chrome/android/java/res/drawable/blue_google_shield.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright 2023 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+<vector android:alpha="0.9" android:height="24dp"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#1967D2" android:pathData="M21.6,4.73c0,-0.83 -0.52,-1.56 -1.3,-1.85l-7.64,-2.76c-0.43,-0.16 -0.91,-0.16 -1.34,0L3.7,2.88C2.92,3.16 2.4,3.9 2.4,4.73v5.25c0.02,0.9 0.09,1.77 0.21,2.66c0.57,3.82 2.73,8.15 8.64,11.18c0.47,0.24 1.03,0.24 1.5,0c5.91,-3.03 8.07,-7.36 8.64,-11.18c0.12,-0.89 0.19,-1.76 0.21,-2.66V4.73z"/>
+    <group>
+        <clip-path android:pathData="M21.6,4.73c0,-0.83 -0.52,-1.56 -1.3,-1.85l-7.64,-2.76c-0.43,-0.16 -0.91,-0.16 -1.34,0L3.7,2.88C2.92,3.16 2.4,3.9 2.4,4.73v5.25c0.02,0.9 0.09,1.77 0.21,2.66c0.57,3.82 2.73,8.15 8.64,11.18c0.47,0.24 1.03,0.24 1.5,0c5.91,-3.03 8.07,-7.36 8.64,-11.18c0.12,-0.89 0.19,-1.76 0.21,-2.66V4.73z"/>
+        <path android:fillColor="#185ABC" android:pathData="M0,-0.27h12v24.55h-12z"/>
+    </group>
+    <path android:fillColor="#E8F0FE" android:pathData="M12.11,16.4c-3.09,0 -5.6,-2.51 -5.6,-5.6s2.51,-5.6 5.6,-5.6c1.51,0 2.78,0.56 3.75,1.46l-1.48,1.42c-0.43,-0.4 -1.16,-0.87 -2.27,-0.87c-1.95,0 -3.53,1.61 -3.53,3.6s1.59,3.6 3.53,3.6c2.25,0 3.18,-1.62 3.27,-2.7H12V9.78h5.35c0.08,0.35 0.13,0.68 0.13,1.14C17.49,14.13 15.35,16.4 12.11,16.4z"/>
+    <group>
+        <clip-path android:pathData="M12.11,16.4c-3.09,0 -5.6,-2.51 -5.6,-5.6s2.51,-5.6 5.6,-5.6c1.51,0 2.78,0.56 3.75,1.46l-1.48,1.42c-0.43,-0.4 -1.16,-0.87 -2.27,-0.87c-1.95,0 -3.53,1.61 -3.53,3.6s1.59,3.6 3.53,3.6c2.25,0 3.18,-1.62 3.27,-2.7H12V9.78h5.35c0.08,0.35 0.13,0.68 0.13,1.14C17.49,14.13 15.35,16.4 12.11,16.4z"/>
+        <path android:fillColor="#D2E3FC" android:pathData="M6.4,5.2h5.6v11.2h-5.6z"/>
+    </group>
+</vector>
diff --git a/chrome/android/java/res/drawable/gray_shield.xml b/chrome/android/java/res/drawable/gray_shield.xml
new file mode 100644
index 0000000..619af1f
--- /dev/null
+++ b/chrome/android/java/res/drawable/gray_shield.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright 2023 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+
+<vector android:alpha="0.9" android:height="24dp"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/darker_gray" android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12V5l-9,-4z"/>
+</vector>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
index 97452a7..b42af49 100644
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -163,11 +163,11 @@
     <dimen name="tile_carousel_layout_bottom_margin">24dp</dimen>
     <dimen name="mvt_container_to_ntp_right_extra_margin_two_feed_tablet">16dp</dimen>
     <dimen name="mvt_container_bottom_margin_tablet">48dp</dimen>
-    <dimen name="tile_grid_layout_landscape_edge_margin_tablet">48dp</dimen>
-    <dimen name="tile_grid_layout_portrait_edge_margin_tablet">32dp</dimen>
+    <dimen name="tile_grid_layout_landscape_edge_margin_tablet">100dp</dimen>
+    <dimen name="tile_grid_layout_portrait_edge_margin_tablet">84dp</dimen>
     <dimen name="tile_carousel_layout_max_interval_margin_tablet">64dp</dimen>
-    <dimen name="single_tab_card_top_and_bottom_margin_carousel_mvt_tablet">48dp</dimen>
-    <dimen name="single_tab_card_top_and_bottom_margin_grid_mvt_tablet">36dp</dimen>
+    <dimen name="single_tab_card_top_margin_tablet">48dp</dimen>
+    <dimen name="single_tab_card_bottom_margin_tablet">40dp</dimen>
     <dimen name="ntp_iph_searchbox_y_inset">6dp</dimen>
     <dimen name="ntp_logo_height">100dp</dimen>
     <dimen name="ntp_logo_margin_top">26dp</dimen>
@@ -193,6 +193,7 @@
     <dimen name="feed_header_icon_size">20dp</dimen>
     <dimen name="feed_header_tab_layout_height">40dp</dimen>
     <dimen name="feed_v2_header_menu_width">20dp</dimen>
+    <dimen name="feed_header_tab_list_view_top_bottom_margin">8dp</dimen>
 
     <!-- Incognito NTP -->
     <dimen name="incognito_ntp_total_space_between_views">14sp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
index bd01f54..9bc07a26 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -68,7 +68,6 @@
         CachedFeatureFlags.cacheNativeFlags(ChromeFeatureList.sFlagsCachedFullBrowser);
         CachedFeatureFlags.cacheAdditionalNativeFlags();
 
-        //clang-format off
         List<CachedFieldTrialParameter> fieldTrialsToCache = List.of(
                 BrandingController.BRANDING_CADENCE_MS,
                 BrandingController.MAX_BLANK_TOOLBAR_TIMEOUT_MS,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProvider.java
new file mode 100644
index 0000000..d7c74249
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProvider.java
@@ -0,0 +1,66 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.auxiliary_search;
+
+import android.util.Pair;
+
+import org.chromium.chrome.browser.auxiliary_search.AuxiliarySearchGroupProto.AuxiliarySearchBookmarkGroup;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.TabList;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class provides information for the auxiliary search.
+ */
+public class AuxiliarySearchProvider {
+    private static final int kNumTabsToSend = 100;
+
+    private final AuxiliarySearchBridge mAuxiliarySearchBridge;
+    private final TabModelSelector mTabModelSelector;
+
+    public AuxiliarySearchProvider(Profile profile, TabModelSelector tabModelSelector) {
+        mAuxiliarySearchBridge = new AuxiliarySearchBridge(profile);
+        mTabModelSelector = tabModelSelector;
+    }
+
+    /**
+     * @return A list of titles and urls as pairs from tabs for the auxiliary search.
+     */
+    public List<Pair<String, String>> getTabsSearchableData() {
+        List<Pair<String, String>> tabsList = new ArrayList<>();
+
+        TabList tabList = mTabModelSelector.getModel(false).getComprehensiveModel();
+        int firstTabIndex = Math.max(tabList.getCount() - kNumTabsToSend, 0);
+        int end = tabList.getCount() - 1;
+        // Find the the bottom of tabs in the tab switcher view if the number of the tabs more than
+        // 'kNumTabsToSend'. In the multiwindow mode, the order of the 'tabList' is one window's
+        // tabs, and then another's.
+        for (int i = firstTabIndex; i <= end; i++) {
+            Tab tab = tabList.getTabAt(i);
+            tabsList.add(new Pair<>(tab.getTitle(), tab.getUrl().getSpec()));
+        }
+        return tabsList;
+    }
+
+    /**
+     * @return A list of titles and urls as pairs from bookmarks for the auxiliary search.
+     */
+    public List<Pair<String, String>> getBookmarksSearchableData() {
+        AuxiliarySearchBookmarkGroup group = mAuxiliarySearchBridge.getBookmarksSearchableData();
+
+        List<Pair<String, String>> bookmarksList = new ArrayList<>();
+        if (group != null) {
+            for (int i = 0; i < group.getBookmarkCount(); i++) {
+                AuxiliarySearchBookmarkGroup.Bookmark bookmark = group.getBookmark(i);
+                bookmarksList.add(new Pair<>(bookmark.getTitle(), bookmark.getUrl()));
+            }
+        }
+        return bookmarksList;
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProviderTest.java b/chrome/android/java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProviderTest.java
new file mode 100644
index 0000000..08590cd
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/auxiliary_search/AuxiliarySearchProviderTest.java
@@ -0,0 +1,125 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.auxiliary_search;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+
+import android.util.Pair;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.JniMocker;
+import org.chromium.chrome.browser.auxiliary_search.AuxiliarySearchGroupProto.AuxiliarySearchBookmarkGroup;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.tab.MockTab;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel;
+import org.chromium.url.GURL;
+
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * Unit tests for {@link AuxiliarySearchProvider}
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+@Features.EnableFeatures({ChromeFeatureList.ANDROID_APP_INTEGRATION})
+public class AuxiliarySearchProviderTest {
+    private static final String TAB_URL = "https://tab.google.com/";
+    private static final String BOOKMARK_TITLE = "bookmark";
+    private static final String BOOKMARK_URL = "https://bookmark.google.com";
+    private static final long FAKE_NATIVE_PROVIDER = 1;
+
+    public @Rule JniMocker mJniMocker = new JniMocker();
+    public @Rule MockitoRule mMockitoRule = MockitoJUnit.rule();
+    public @Rule TestRule mProcessor = new Features.JUnitProcessor();
+
+    private @Mock AuxiliarySearchBridge.Natives mMockAuxiliarySearchBridgeJni;
+    private @Mock Profile mProfile;
+    private @Mock TabModelSelector mTabModelSelector;
+
+    private AuxiliarySearchProvider mAuxiliarySearchProvider;
+
+    @Before
+    public void setUp() {
+        mJniMocker.mock(AuxiliarySearchBridgeJni.TEST_HOOKS, mMockAuxiliarySearchBridgeJni);
+        doReturn(FAKE_NATIVE_PROVIDER).when(mMockAuxiliarySearchBridgeJni).getForProfile(mProfile);
+        mAuxiliarySearchProvider = new AuxiliarySearchProvider(mProfile, mTabModelSelector);
+    }
+
+    @Test
+    @SmallTest
+    public void testgetTabsSearchableData() throws InterruptedException {
+        MockTabModel mockTabModel = new MockTabModel(false, null);
+        for (int i = 0; i < 200; i++) {
+            MockTab tab = (MockTab) mockTabModel.addTab(i);
+            tab.setGurlOverrideForTesting(new GURL(TAB_URL + Integer.toString(i)));
+        }
+
+        doReturn(mockTabModel).when(mTabModelSelector).getModel(false);
+        List<Pair<String, String>> tabsList = mAuxiliarySearchProvider.getTabsSearchableData();
+
+        assertEquals(tabsList.size(), 100);
+        HashSet<Integer> returnedTabsNumbers = new HashSet<Integer>();
+        for (int i = 0; i < tabsList.size(); i++) {
+            int number = Integer.valueOf(tabsList.get(i).second.substring(TAB_URL.length()));
+            assertTrue(number >= 100 && number <= 199);
+            returnedTabsNumbers.add(number);
+        }
+        assertEquals(returnedTabsNumbers.size(), 100);
+    }
+
+    @Test
+    @SmallTest
+    public void testgetBookmarksSearchableData() {
+        var bookmark = AuxiliarySearchBookmarkGroup.Bookmark.newBuilder()
+                               .setTitle(BOOKMARK_TITLE)
+                               .setUrl(BOOKMARK_URL)
+                               .build();
+        var proto = AuxiliarySearchBookmarkGroup.newBuilder().addBookmark(bookmark).build();
+
+        doReturn(proto.toByteArray())
+                .when(mMockAuxiliarySearchBridgeJni)
+                .getBookmarksSearchableData(FAKE_NATIVE_PROVIDER);
+
+        List<Pair<String, String>> bookmarksList =
+                mAuxiliarySearchProvider.getBookmarksSearchableData();
+
+        assertEquals(bookmarksList.size(), 1);
+        assertEquals(bookmarksList.get(0).first, BOOKMARK_TITLE);
+        assertEquals(bookmarksList.get(0).second, BOOKMARK_URL);
+    }
+
+    @Test
+    @SmallTest
+    public void testgetBookmarksSearchableData_failureToParse() {
+        // Return a random array which cannot been parsed to proto.
+        doReturn(new byte[] {1, 2, 3})
+                .when(mMockAuxiliarySearchBridgeJni)
+                .getBookmarksSearchableData(FAKE_NATIVE_PROVIDER);
+
+        List<Pair<String, String>> bookmarksList =
+                mAuxiliarySearchProvider.getBookmarksSearchableData();
+
+        bookmarksList = mAuxiliarySearchProvider.getBookmarksSearchableData();
+        assertEquals(bookmarksList.size(), 0);
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
index d44a314..c26b06b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
@@ -71,7 +71,6 @@
 class BookmarkManagerMediator
         implements BookmarkDelegate, TestingDelegate, PartnerBookmarksReader.FaviconUpdateObserver {
     private static final String EMPTY_QUERY = null;
-    private static final long MICRO_CURRENCY_QUOTIENT = 1000000;
 
     private static boolean sPreventLoadingForTesting;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
index 2089016..19b0dbc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
@@ -50,7 +50,6 @@
     private boolean mEditButtonVisible;
     private boolean mNewFolderButtonVisible;
 
-    private Runnable mOpenSearchUiRunnable;
     private Callback<BookmarkId> mOpenFolderCallback;
     private Function<Integer, Boolean> mMenuIdClickedFunction;
 
@@ -148,10 +147,6 @@
         mCurrentFolder = mBookmarkModel.getBookmarkById(folder);
     }
 
-    void setOpenSearchUiRunnable(Runnable runnable) {
-        mOpenSearchUiRunnable = runnable;
-    }
-
     void setOpenFolderCallback(Callback<BookmarkId> openFolderCallback) {
         mOpenFolderCallback = openFolderCallback;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java
index dcdc218b..a10de3b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java
@@ -80,8 +80,6 @@
         }
         bookmarkDelegateSupplier.onAvailable((bookmarkDelegate) -> {
             mBookmarkDelegate = bookmarkDelegate;
-            mModel.set(BookmarkToolbarProperties.OPEN_SEARCH_UI_RUNNABLE,
-                    mBookmarkDelegate::openSearchUi);
             mModel.set(
                     BookmarkToolbarProperties.OPEN_FOLDER_CALLBACK, mBookmarkDelegate::openFolder);
             mBookmarkDelegate.addUiObserver(this);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java
index a3f8c44c..354562e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java
@@ -56,8 +56,6 @@
             new WritableObjectPropertyKey<>(/*skipEquality=*/true);
 
     /** Callables to delegate business logic back to the mediator */
-    static final WritableObjectPropertyKey<Runnable> OPEN_SEARCH_UI_RUNNABLE =
-            new WritableObjectPropertyKey<>();
     static final WritableObjectPropertyKey<Function<Integer, Boolean>> MENU_ID_CLICKED_FUNCTION =
             new WritableObjectPropertyKey<>();
     static final WritableObjectPropertyKey<Callback<BookmarkId>> OPEN_FOLDER_CALLBACK =
@@ -67,6 +65,5 @@
             TITLE, BOOKMARK_UI_MODE, SOFT_KEYBOARD_VISIBLE, IS_DIALOG_UI, DRAG_ENABLED,
             SEARCH_BUTTON_VISIBLE, EDIT_BUTTON_VISIBLE, NEW_FOLDER_BUTTON_VISIBLE,
             NAVIGATION_BUTTON_STATE, CURRENT_FOLDER, CHECKED_SORT_MENU_ID, CHECKED_VIEW_MENU_ID,
-            OPEN_SEARCH_UI_RUNNABLE, MENU_ID_CLICKED_FUNCTION, OPEN_FOLDER_CALLBACK,
-            FAKE_SELECTION_STATE_CHANGE};
+            MENU_ID_CLICKED_FUNCTION, OPEN_FOLDER_CALLBACK, FAKE_SELECTION_STATE_CHANGE};
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java
index ae1b949..1c0e057e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java
@@ -53,9 +53,6 @@
                     model.get(BookmarkToolbarProperties.CHECKED_VIEW_MENU_ID));
         } else if (key == BookmarkToolbarProperties.CURRENT_FOLDER) {
             bookmarkToolbar.setCurrentFolder(model.get(BookmarkToolbarProperties.CURRENT_FOLDER));
-        } else if (key == BookmarkToolbarProperties.OPEN_SEARCH_UI_RUNNABLE) {
-            bookmarkToolbar.setOpenSearchUiRunnable(
-                    model.get(BookmarkToolbarProperties.OPEN_SEARCH_UI_RUNNABLE));
         } else if (key == BookmarkToolbarProperties.OPEN_FOLDER_CALLBACK) {
             bookmarkToolbar.setOpenFolderCallback(
                     model.get(BookmarkToolbarProperties.OPEN_FOLDER_CALLBACK));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java
index 4007c82..650361a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java
@@ -154,7 +154,6 @@
 
     void setListMenuButtonDelegate(ListMenuButtonDelegate listMenuButtonDelegate) {
         mMoreButton.setDelegate(listMenuButtonDelegate);
-        mMoreButton.setVisibility(View.VISIBLE);
     }
 
     void setPopupListener(PopupMenuShownListener listener) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
index 20f07e5..ab0f82be 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
@@ -1112,18 +1112,13 @@
 
         MarginLayoutParams marginLayoutParams =
                 (MarginLayoutParams) mSingleTabCardContainer.getLayoutParams();
-        int SingleTabCardContainerTopAndBottomMargin;
-        if (isScrollableMvtEnabled(mContext)) {
-            SingleTabCardContainerTopAndBottomMargin =
-                    mNewTabPageLayout.getResources().getDimensionPixelOffset(
-                            R.dimen.single_tab_card_top_and_bottom_margin_carousel_mvt_tablet);
-        } else {
-            SingleTabCardContainerTopAndBottomMargin =
-                    mNewTabPageLayout.getResources().getDimensionPixelOffset(
-                            R.dimen.single_tab_card_top_and_bottom_margin_grid_mvt_tablet);
-        }
-        marginLayoutParams.topMargin = -SingleTabCardContainerTopAndBottomMargin;
-        marginLayoutParams.bottomMargin = SingleTabCardContainerTopAndBottomMargin;
+
+        marginLayoutParams.topMargin = -mNewTabPageLayout.getResources().getDimensionPixelOffset(
+                R.dimen.single_tab_card_top_margin_tablet);
+        marginLayoutParams.bottomMargin = mNewTabPageLayout.getResources().getDimensionPixelOffset(
+                                                  R.dimen.single_tab_card_bottom_margin_tablet)
+                - mNewTabPageLayout.getResources().getDimensionPixelOffset(
+                        R.dimen.feed_header_tab_list_view_top_bottom_margin);
     }
 
     /* Set the visibility of the single tab card.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java
index ba22121..cfb3848 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java
@@ -41,7 +41,8 @@
      * The maximum number of tiles to try and fit in a row. On smaller screens, there may not be
      * enough space to fit all of them.
      */
-    private static final int MAX_TILE_COLUMNS_FOR_GRID = 4;
+    @VisibleForTesting
+    public static final int MAX_TILE_COLUMNS_FOR_GRID = 4;
 
     private final Activity mActivity;
     private final ActivityLifecycleDispatcher mActivityLifecycleDispatcher;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
index c5f73fa0..cc0ed05 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java
@@ -113,7 +113,7 @@
         // Determine how much padding to use between and around the tiles.
         int gridWidthMinusColumns = Math.max(0, totalWidth - numColumns * childWidth);
         Pair<Integer, Integer> gridProperties =
-                computeHorizontalDimensions(true, gridWidthMinusColumns, numColumns);
+                computeHorizontalDimensions(gridWidthMinusColumns, numColumns);
         int gridStart = gridProperties.first;
         int horizontalSpacing = gridProperties.second;
 
@@ -150,14 +150,12 @@
     }
 
     /**
-     * @param spreadTiles Whether to spread the tiles with the same space between and around them.
      * @param availableWidth The space available to spread between and around the tiles.
      * @param numColumns The number of columns to be organised.
      * @return The [gridStart, horizontalSpacing] pair of dimensions.
      */
     @VisibleForTesting
-    Pair<Integer, Integer> computeHorizontalDimensions(
-            boolean spreadTiles, int availableWidth, int numColumns) {
+    Pair<Integer, Integer> computeHorizontalDimensions(int availableWidth, int numColumns) {
         int gridStart;
         float horizontalSpacing;
         if (mIsMultiColumnFeedOnTabletEnabled) {
@@ -167,25 +165,22 @@
                     : mTileViewPortraitEdgePaddingTablet;
             horizontalSpacing = (availableWidth - gridStart * 2) / (numColumns - 1);
         } else {
-            if (spreadTiles) {
-                // Identically sized spacers are added both between and around the tiles.
-                int spacerCount = numColumns + 1;
-                horizontalSpacing = (float) availableWidth / spacerCount;
-                gridStart = Math.round(horizontalSpacing);
-                if (horizontalSpacing < mMinHorizontalSpacing) {
-                    return computeHorizontalDimensions(false, availableWidth, numColumns);
-                }
+            // Identically sized spacers are added both between and around the tiles.
+            int spacerCount = numColumns + 1;
+            horizontalSpacing = (float) availableWidth / spacerCount;
+            gridStart = Math.round(horizontalSpacing);
+        }
+
+        if (horizontalSpacing < mMinHorizontalSpacing
+                || horizontalSpacing > mMaxHorizontalSpacing) {
+            // Ensure column spacing isn't greater than mMaxHorizontalSpacing.
+            long gridSidePadding = availableWidth - (long) mMaxHorizontalSpacing * (numColumns - 1);
+            if (gridSidePadding > 0) {
+                horizontalSpacing = mMaxHorizontalSpacing;
+                gridStart = (int) (gridSidePadding / 2);
             } else {
-                // Ensure column spacing isn't greater than mMaxHorizontalSpacing.
-                long gridSidePadding =
-                        availableWidth - (long) mMaxHorizontalSpacing * (numColumns - 1);
-                if (gridSidePadding > 0) {
-                    horizontalSpacing = mMaxHorizontalSpacing;
-                    gridStart = (int) (gridSidePadding / 2);
-                } else {
-                    horizontalSpacing = (float) availableWidth / Math.max(1, numColumns - 1);
-                    gridStart = 0;
-                }
+                horizontalSpacing = (float) availableWidth / Math.max(1, numColumns - 1);
+                gridStart = 0;
             }
         }
 
@@ -219,6 +214,16 @@
         mIsMultiColumnFeedOnTabletEnabled = isMultiColumnFeedOnTabletEnabled;
     }
 
+    @VisibleForTesting
+    public int getMinHorizontalSpacingForTesting() {
+        return mMinHorizontalSpacing;
+    }
+
+    @VisibleForTesting
+    public int getMaxHorizontalSpacingForTesting() {
+        return mMaxHorizontalSpacing;
+    }
+
     // TODO(crbug.com/1329288): Remove this method when the Feed position experiment is cleaned up.
     private int getGridMVTVerticalSpacingResourcesId() {
         if (!LibraryLoader.getInstance().isInitialized() || !mSearchProviderHasLogo) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java
index 2d851c6..df9acbc3 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java
@@ -88,8 +88,6 @@
     @Mock
     BookmarkOpener mBookmarkOpener;
     @Mock
-    Runnable mOpenSearchUiRunnable;
-    @Mock
     Callback<BookmarkId> mOpenFolderCallback;
 
     private Activity mActivity;
@@ -163,7 +161,6 @@
         mBookmarkToolbar.setSelectionDelegate(mSelectionDelegate);
         mBookmarkToolbar.setBookmarkUiMode(BookmarkUiMode.FOLDER);
         mBookmarkToolbar.setIsDialogUi(true);
-        mBookmarkToolbar.setOpenSearchUiRunnable(mOpenSearchUiRunnable);
         mBookmarkToolbar.setOpenFolderCallback(mOpenFolderCallback);
     }
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediatorTest.java
index 513a7ba9..5f4909c6 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediatorTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediatorTest.java
@@ -86,8 +86,6 @@
     @Mock
     private SelectionDelegate mSelectionDelegate;
     @Mock
-    private Runnable mOpenSearchUiRunnable;
-    @Mock
     private Callback mOpenFolderCallback;
     @Mock
     private BookmarkId mBookmarkId;
@@ -126,8 +124,6 @@
                          .with(BookmarkToolbarProperties.BOOKMARK_UI_MODE, BookmarkUiMode.LOADING)
                          .with(BookmarkToolbarProperties.IS_DIALOG_UI, false)
                          .with(BookmarkToolbarProperties.DRAG_ENABLED, false)
-                         .with(BookmarkToolbarProperties.OPEN_SEARCH_UI_RUNNABLE,
-                                 mOpenSearchUiRunnable)
                          .with(BookmarkToolbarProperties.OPEN_FOLDER_CALLBACK, mOpenFolderCallback)
                          .build();
         mBookmarkDelegateSupplier = new OneshotSupplierImpl<>();
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java
index 58c9d35..d7a743a9 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java
@@ -141,4 +141,13 @@
         Assert.assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES,
                 mImprovedBookmarkRow.findViewById(R.id.more).getImportantForAccessibility());
     }
+
+    @Test
+    public void testListMenuButtonDelegateDoesNotChangeVisibility() {
+        int visibility = mImprovedBookmarkRow.findViewById(R.id.more).getVisibility();
+        mModel.set(ImprovedBookmarkRowProperties.LIST_MENU_BUTTON_DELEGATE, null);
+        // Setting the delegate shouldn't affect visibility.
+        Assert.assertEquals(
+                visibility, mImprovedBookmarkRow.findViewById(R.id.more).getVisibility());
+    }
 }
diff --git a/chrome/android/profiles/arm.newest.txt b/chrome/android/profiles/arm.newest.txt
index 3f15e69..4d134753 100644
--- a/chrome/android/profiles/arm.newest.txt
+++ b/chrome/android/profiles/arm.newest.txt
@@ -1 +1 @@
-chromeos-chrome-arm-115.0.5786.0_rc-r1-merged.afdo.bz2
+chromeos-chrome-arm-115.0.5788.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index 8c96aeb..ff8750f 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-115.0.5786.0_rc-r1-merged.afdo.bz2
+chromeos-chrome-amd64-115.0.5788.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
index 75c567c..393c84d7 100644
--- a/chrome/app/chrome_command_ids.h
+++ b/chrome/app/chrome_command_ids.h
@@ -253,6 +253,7 @@
 #define IDC_BOOKMARKS_LIST_TITLE        40273
 #define IDC_SHOW_BOOKMARK_SIDE_PANEL    40274
 #define IDC_SHOW_SEARCH_COMPANION       40275
+#define IDC_SHOW_CHROME_LABS            40276
 
 // Spell-check
 // Insert any additional suggestions before _LAST; these have to be consecutive.
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 5740d1c..12082630 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -1403,6 +1403,9 @@
         <message name="IDS_NAME_WINDOW" desc="The text label of the Name Window menu item, used to give a user-specified name to a window.">
           Name &amp;window...
         </message>
+        <message name="IDS_CHROMELABS" desc="The text label of the Chrome Labs menu item">
+          Chrome &amp;Labs...
+        </message>
       </if>
       <if expr="use_titlecase">
         <message name="IDS_VIEW_SOURCE" desc="In Title Case: The text label of the View Page Source menu item">
@@ -1450,6 +1453,9 @@
         <message name="IDS_NAME_WINDOW" desc="In Title Case: The text label of the Name Window menu item, used to give a user-specified name to a window.">
           Name &amp;Window...
         </message>
+        <message name="IDS_CHROMELABS" desc="In Title Case: The text label of the Chrome Labs menu item">
+          Chrome &amp;Labs...
+        </message>
       </if>
 
       <if expr="is_macosx">
@@ -6275,6 +6281,21 @@
       <message name="IDS_PASSWORD_GENERATION_HELP_TEXT_CONVENIENCE" desc="Autofill dropdown text describing password generation with a convenience proposition.">
           Sign up and sign in faster when your password is automatically saved to <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google Password Manager</ex></ph> for <ph name="EMAIL">$2<ex>user@gmail.com</ex></ph>.
       </message>
+      <message name="IDS_PASSWORD_GENERATION_BENEFITS" desc="Autofill dropdown text before listing bullet points of password generation benefits.">
+          When you use and save this password:
+      </message>
+      <message name="IDS_PASSWORD_GENERATION_CROSS_DEVICE" desc="Autofill dropdown text describing that the generated password is available cross-device.">
+          It's available on any device
+      </message>
+      <message name="IDS_PASSWORD_GENERATION_SECURITY" desc="Autofill dropdown text describing that the generated password is protected by the best Google technologies.">
+          It's protected by the best of Google
+      </message>
+      <message name="IDS_PASSWORD_GENERATION_PROACTIVE_CHECK" desc="Autofill dropdown text describing that the user will be notified whenever their saved generated password is at risk.">
+          You'll be notified if it's ever at risk
+      </message>
+      <message name="IDS_PASSWORD_GENERATION_HELP_TEXT" desc="Autofill dropdown text describing where the generated password is saved and how to access it.">
+          It will be saved to <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google Password Manager</ex></ph> for <ph name="EMAIL">$2<ex>user@gmail.com</ex></ph>.
+      </message>
       <message name="IDS_PASSWORD_MANAGEMENT_BUBBLE_FOOTER_ACCOUNT_STORE_USERS" desc="The footer text of the managment bubble the lists saved password for this website. This is used only for account store users.">
         Passwords are saved to <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google Password Manager</ex></ph>.
       </message>
diff --git a/chrome/app/generated_resources_grd/IDS_CHROMELABS.png.sha1 b/chrome/app/generated_resources_grd/IDS_CHROMELABS.png.sha1
new file mode 100644
index 0000000..ca7e1d6b2
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_CHROMELABS.png.sha1
@@ -0,0 +1 @@
+5474aa5724847a353090902521a4464f4d36c7fc
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_BENEFITS.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_BENEFITS.png.sha1
new file mode 100644
index 0000000..453f2cf
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_BENEFITS.png.sha1
@@ -0,0 +1 @@
+0a8a579448c33477635581e22af4bbb57161c7b9
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_CROSS_DEVICE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_CROSS_DEVICE.png.sha1
new file mode 100644
index 0000000..453f2cf
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_CROSS_DEVICE.png.sha1
@@ -0,0 +1 @@
+0a8a579448c33477635581e22af4bbb57161c7b9
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_HELP_TEXT.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_HELP_TEXT.png.sha1
new file mode 100644
index 0000000..453f2cf
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_HELP_TEXT.png.sha1
@@ -0,0 +1 @@
+0a8a579448c33477635581e22af4bbb57161c7b9
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_PROACTIVE_CHECK.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_PROACTIVE_CHECK.png.sha1
new file mode 100644
index 0000000..453f2cf
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_PROACTIVE_CHECK.png.sha1
@@ -0,0 +1 @@
+0a8a579448c33477635581e22af4bbb57161c7b9
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_SECURITY.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_SECURITY.png.sha1
new file mode 100644
index 0000000..453f2cf
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_GENERATION_SECURITY.png.sha1
@@ -0,0 +1 @@
+0a8a579448c33477635581e22af4bbb57161c7b9
\ No newline at end of file
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn
index 5e47212..33327df 100644
--- a/chrome/app/vector_icons/BUILD.gn
+++ b/chrome/app/vector_icons/BUILD.gn
@@ -35,7 +35,7 @@
     "browser_tools_error.icon",
     "browser_tools_touch.icon",
     "browser_tools_update.icon",
-    "cast_menu.icon",
+    "cast_chrome_refresh.icon",
     "chevron_right.icon",
     "chrome_labs.icon",
     "chrome_labs_chrome_refresh.icon",
@@ -52,7 +52,10 @@
     "cut_menu.icon",
     "default_touch_favicon.icon",
     "default_touch_favicon_mask.icon",
-    "desktop_windows.icon",
+    "desktop_windows_chrome_refresh.icon",
+    "developer_tools.icon",
+    "devices.icon",
+    "devices_chrome_refresh.icon",
     "download_in_progress.icon",
     "download_in_progress_chrome_refresh.icon",
     "download_in_progress_touch.icon",
@@ -65,6 +68,9 @@
     "exit_menu.icon",
     "extension_crashed.icon",
     "file_download_shelf.icon",
+    "file_save.icon",
+    "file_save_chrome_refresh.icon",
+    "file_save_off_chrome_refresh.icon",
     "fingerprint.icon",
     "forward_arrow_touch.icon",
     "fullscreen.icon",
@@ -94,9 +100,8 @@
     "keyboard_arrow_right.icon",
     "keyboard_arrow_up.icon",
     "laptop.icon",
-    "laptop_and_smartphone.icon",
-    "laptop_and_smartphone_chrome_refresh.icon",
     "leading_scroll.icon",
+    "link.icon",
     "location_on_chrome_refresh.icon",
     "media_controls_arrow_drop_down.icon",
     "media_controls_arrow_drop_up.icon",
@@ -108,6 +113,7 @@
     "more_tools_menu.icon",
     "move_group_to_new_window.icon",
     "my_location.icon",
+    "name_window.icon",
     "navigate_home.icon",
     "navigate_home_chrome_refresh.icon",
     "navigate_home_touch.icon",
@@ -126,6 +132,7 @@
     "paintbrush.icon",
     "palette.icon",
     "paste_menu.icon",
+    "performance.icon",
     "person_filled_padded_large.icon",
     "person_filled_padded_small.icon",
     "photo_camera.icon",
@@ -133,6 +140,7 @@
     "picture_in_picture_control_background.icon",
     "print_menu.icon",
     "qrcode_generator.icon",
+    "quick_commands.icon",
     "read_anything_letter_spacing.icon",
     "read_anything_letter_spacing_standard.icon",
     "read_anything_letter_spacing_very_wide.icon",
@@ -195,6 +203,7 @@
     "tab_search.icon",
     "tab_usb_connected.icon",
     "tablet.icon",
+    "task_manager.icon",
     "text_decrease.icon",
     "text_increase.icon",
     "toolbar_chrome_refresh.icon",
@@ -304,7 +313,6 @@
       "notification_wifi.icon",
       "notification_wifi_off.icon",
       "person_add.icon",
-      "sharesheet_link.icon",
       "sharesheet_share_with_others.icon",
       "shutdown_guest_os.icon",
       "tip.icon",
diff --git a/chrome/app/vector_icons/cast_menu.icon b/chrome/app/vector_icons/cast_chrome_refresh.icon
similarity index 100%
rename from chrome/app/vector_icons/cast_menu.icon
rename to chrome/app/vector_icons/cast_chrome_refresh.icon
diff --git a/chrome/app/vector_icons/chrome_labs_chrome_refresh.icon b/chrome/app/vector_icons/chrome_labs_chrome_refresh.icon
index 84518c9..4f720c7 100644
--- a/chrome/app/vector_icons/chrome_labs_chrome_refresh.icon
+++ b/chrome/app/vector_icons/chrome_labs_chrome_refresh.icon
@@ -32,3 +32,38 @@
 V_LINE_TO, 10,
 R_LINE_TO, -4.5f, 5.5f,
 CLOSE
+
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 3.6f, 13.73f,
+R_CUBIC_TO, -0.56f, 0, -0.96f, -0.25f, -1.21f, -0.75f,
+R_CUBIC_TO, -0.25f, -0.5f, -0.2f, -0.97f, 0.15f, -1.4f,
+R_LINE_TO, 3.32f, -4.03f,
+V_LINE_TO, 3.69f,
+R_H_LINE_TO, -0.47f,
+R_ARC_TO, 0.68f, 0.68f, 0, 0, 1, -0.49f, -0.2f,
+R_ARC_TO, 0.67f, 0.67f, 0, 0, 1, -0.2f, -0.49f,
+R_ARC_TO, 0.67f, 0.67f, 0, 0, 1, 0.2f, -0.49f,
+R_ARC_TO, 0.66f, 0.66f, 0, 0, 1, 0.49f, -0.2f,
+R_H_LINE_TO, 5.23f,
+R_CUBIC_TO, 0.19f, 0, 0.36f, 0.07f, 0.49f, 0.2f,
+R_ARC_TO, 0.66f, 0.66f, 0, 0, 1, 0.2f, 0.49f,
+R_ARC_TO, 0.67f, 0.67f, 0, 0, 1, -0.2f, 0.49f,
+R_ARC_TO, 0.66f, 0.66f, 0, 0, 1, -0.49f, 0.2f,
+R_H_LINE_TO, -0.48f,
+R_V_LINE_TO, 3.86f,
+R_LINE_TO, 3.32f, 4.03f,
+R_CUBIC_TO, 0.36f, 0.43f, 0.41f, 0.9f, 0.17f, 1.41f,
+R_CUBIC_TO, -0.25f, 0.5f, -0.65f, 0.75f, -1.22f, 0.75f,
+CLOSE,
+R_MOVE_TO, 1.8f, -2.18f,
+R_H_LINE_TO, 5.2f,
+LINE_TO, 8.61f, 9.11f,
+H_LINE_TO, 7.39f,
+CLOSE,
+R_MOVE_TO, -1.7f, 0.8f,
+R_H_LINE_TO, 8.59f,
+LINE_TO, 8.75f, 8.02f,
+V_LINE_TO, 3.69f,
+H_LINE_TO, 7.25f,
+V_LINE_TO, 8.02f,
+CLOSE
diff --git a/chrome/app/vector_icons/desktop_windows.icon b/chrome/app/vector_icons/desktop_windows_chrome_refresh.icon
similarity index 100%
rename from chrome/app/vector_icons/desktop_windows.icon
rename to chrome/app/vector_icons/desktop_windows_chrome_refresh.icon
diff --git a/chrome/app/vector_icons/developer_tools.icon b/chrome/app/vector_icons/developer_tools.icon
new file mode 100644
index 0000000..f143c56
--- /dev/null
+++ b/chrome/app/vector_icons/developer_tools.icon
@@ -0,0 +1,21 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 5.54f, 12.13f,
+LINE_TO, 1.41f, 8,
+R_LINE_TO, 4.13f, -4.13f,
+R_LINE_TO, 0.98f, 0.98f,
+R_LINE_TO, -3.15f, 3.15f,
+R_LINE_TO, 3.15f, 3.15f,
+CLOSE,
+R_MOVE_TO, 4.92f, 0,
+R_LINE_TO, -0.98f, -0.98f,
+R_LINE_TO, 3.15f, -3.15f,
+R_LINE_TO, -3.15f, -3.15f,
+R_LINE_TO, 0.98f, -0.98f,
+LINE_TO, 14.59f, 8,
+CLOSE,
+R_MOVE_TO, 0, 0,
+CLOSE
\ No newline at end of file
diff --git a/chrome/app/vector_icons/laptop_and_smartphone.icon b/chrome/app/vector_icons/devices.icon
similarity index 100%
rename from chrome/app/vector_icons/laptop_and_smartphone.icon
rename to chrome/app/vector_icons/devices.icon
diff --git a/chrome/app/vector_icons/laptop_and_smartphone_chrome_refresh.icon b/chrome/app/vector_icons/devices_chrome_refresh.icon
similarity index 100%
rename from chrome/app/vector_icons/laptop_and_smartphone_chrome_refresh.icon
rename to chrome/app/vector_icons/devices_chrome_refresh.icon
diff --git a/components/vector_icons/save_original_file.icon b/chrome/app/vector_icons/file_save.icon
similarity index 100%
rename from components/vector_icons/save_original_file.icon
rename to chrome/app/vector_icons/file_save.icon
diff --git a/components/vector_icons/save_original_file_chrome_refresh.icon b/chrome/app/vector_icons/file_save_chrome_refresh.icon
similarity index 100%
rename from components/vector_icons/save_original_file_chrome_refresh.icon
rename to chrome/app/vector_icons/file_save_chrome_refresh.icon
diff --git a/components/vector_icons/save_original_file_off_chrome_refresh.icon b/chrome/app/vector_icons/file_save_off_chrome_refresh.icon
similarity index 100%
rename from components/vector_icons/save_original_file_off_chrome_refresh.icon
rename to chrome/app/vector_icons/file_save_off_chrome_refresh.icon
diff --git a/chrome/app/vector_icons/sharesheet_link.icon b/chrome/app/vector_icons/link.icon
similarity index 100%
rename from chrome/app/vector_icons/sharesheet_link.icon
rename to chrome/app/vector_icons/link.icon
diff --git a/chrome/app/vector_icons/name_window.icon b/chrome/app/vector_icons/name_window.icon
new file mode 100644
index 0000000..33a087a1
--- /dev/null
+++ b/chrome/app/vector_icons/name_window.icon
@@ -0,0 +1,25 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 3.65f, 13.73f,
+R_CUBIC_TO, -0.38f, 0, -0.71f, -0.14f, -0.98f, -0.41f,
+R_ARC_TO, 1.34f, 1.34f, 0, 0, 1, -0.4f, -0.97f,
+V_LINE_TO, 3.65f,
+R_CUBIC_TO, 0, -0.37f, 0.13f, -0.7f, 0.4f, -0.97f,
+R_CUBIC_TO, 0.27f, -0.27f, 0.6f, -0.41f, 0.98f, -0.41f,
+R_H_LINE_TO, 8.7f,
+R_CUBIC_TO, 0.38f, 0, 0.71f, 0.14f, 0.98f, 0.41f,
+R_CUBIC_TO, 0.27f, 0.27f, 0.4f, 0.6f, 0.4f, 0.97f,
+R_V_LINE_TO, 8.7f,
+R_CUBIC_TO, 0, 0.38f, -0.13f, 0.7f, -0.4f, 0.97f,
+R_CUBIC_TO, -0.27f, 0.27f, -0.6f, 0.41f, -0.98f, 0.41f,
+CLOSE,
+R_MOVE_TO, -0.05f, -1.34f,
+R_H_LINE_TO, 8.8f,
+V_LINE_TO, 5.57f,
+H_LINE_TO, 3.6f,
+CLOSE,
+R_MOVE_TO, 0, 0,
+CLOSE
\ No newline at end of file
diff --git a/chrome/app/vector_icons/performance.icon b/chrome/app/vector_icons/performance.icon
new file mode 100644
index 0000000..3a4c3ca
--- /dev/null
+++ b/chrome/app/vector_icons/performance.icon
@@ -0,0 +1,47 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 7.15f, 10.04f,
+R_CUBIC_TO, 0.25f, 0.24f, 0.57f, 0.36f, 0.95f, 0.34f,
+R_CUBIC_TO, 0.38f, -0.02f, 0.66f, -0.16f, 0.84f, -0.43f,
+R_LINE_TO, 3.57f, -5.25f,
+LINE_TO, 7.25f, 8.27f,
+R_CUBIC_TO, -0.27f, 0.19f, -0.43f, 0.47f, -0.44f, 0.84f,
+R_CUBIC_TO, -0.02f, 0.37f, 0.09f, 0.68f, 0.35f, 0.92f,
+CLOSE,
+R_MOVE_TO, 0.87f, -6.97f,
+R_CUBIC_TO, 0.69f, 0, 1.31f, 0.09f, 1.87f, 0.27f,
+R_CUBIC_TO, 0.56f, 0.18f, 1.06f, 0.4f, 1.5f, 0.66f,
+R_LINE_TO, -1.32f, 0.88f,
+R_ARC_TO, 5.13f, 5.13f, 0, 0, 0, -0.95f, -0.32f,
+R_ARC_TO, 5.18f, 5.18f, 0, 0, 0, -1.1f, -0.11f,
+R_CUBIC_TO, -1.43f, 0, -2.64f, 0.51f, -3.65f, 1.54f,
+R_CUBIC_TO, -1.01f, 1.03f, -1.51f, 2.23f, -1.51f, 3.61f,
+R_CUBIC_TO, 0, 0.42f, 0.03f, 0.76f, 0.09f, 1.02f,
+R_CUBIC_TO, 0.06f, 0.26f, 0.15f, 0.57f, 0.28f, 0.93f,
+R_H_LINE_TO, 9.56f,
+R_ARC_TO, 5.93f, 5.93f, 0, 0, 0, 0.3f, -0.98f,
+R_ARC_TO, 5.35f, 5.35f, 0, 0, 0, -0.1f, -2.33f,
+R_ARC_TO, 4.71f, 4.71f, 0, 0, 0, -0.54f, -1.27f,
+R_LINE_TO, 0.84f, -1.24f,
+R_ARC_TO, 6.26f, 6.26f, 0, 0, 1, 0.94f, 1.82f,
+R_CUBIC_TO, 0.22f, 0.67f, 0.33f, 1.34f, 0.33f, 2.03f,
+R_ARC_TO, 7.24f, 7.24f, 0, 0, 1, -0.15f, 1.52f,
+R_ARC_TO, 4.09f, 4.09f, 0, 0, 1, -0.47f, 1.2f,
+R_ARC_TO, 1.32f, 1.32f, 0, 0, 1, -0.48f, 0.49f,
+R_CUBIC_TO, -0.19f, 0.11f, -0.41f, 0.16f, -0.64f, 0.16f,
+H_LINE_TO, 3.2f,
+R_ARC_TO, 1.26f, 1.26f, 0, 0, 1, -1.11f, -0.65f,
+R_ARC_TO, 4.25f, 4.25f, 0, 0, 1, -0.47f, -1.2f,
+R_ARC_TO, 7, 7, 0, 0, 1, -0.15f, -1.52f,
+R_CUBIC_TO, 0, -0.9f, 0.17f, -1.75f, 0.52f, -2.54f,
+R_ARC_TO, 6.59f, 6.59f, 0, 0, 1, 1.4f, -2.06f,
+R_ARC_TO, 6.62f, 6.62f, 0, 0, 1, 2.08f, -1.39f,
+R_ARC_TO, 6.43f, 6.43f, 0, 0, 1, 2.55f, -0.51f,
+CLOSE,
+R_MOVE_TO, 0.06f, 4.71f,
+CLOSE,
+R_MOVE_TO, 0, 0,
+CLOSE
\ No newline at end of file
diff --git a/chrome/app/vector_icons/quick_commands.icon b/chrome/app/vector_icons/quick_commands.icon
new file mode 100644
index 0000000..9dd4017
--- /dev/null
+++ b/chrome/app/vector_icons/quick_commands.icon
@@ -0,0 +1,31 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 1.6f, 13.79f,
+R_V_LINE_TO, -1.39f,
+R_H_LINE_TO, 12.8f,
+R_V_LINE_TO, 1.39f,
+CLOSE,
+MOVE_TO, 12.8f, 11.2f,
+V_LINE_TO, 2.4f,
+R_H_LINE_TO, 0.92f,
+R_V_LINE_TO, 8.8f,
+CLOSE,
+R_MOVE_TO, -10.01f, 0,
+R_LINE_TO, 3.39f, -8.8f,
+R_H_LINE_TO, 1.74f,
+R_LINE_TO, 3.38f, 8.8f,
+H_LINE_TO, 9.55f,
+R_LINE_TO, -0.77f, -2.19f,
+H_LINE_TO, 5.27f,
+R_LINE_TO, -0.78f, 2.19f,
+CLOSE,
+R_MOVE_TO, 2.95f, -3.53f,
+R_H_LINE_TO, 2.56f,
+R_LINE_TO, -1.25f, -3.53f,
+R_H_LINE_TO, -0.06f,
+CLOSE,
+R_MOVE_TO, 0, 0,
+CLOSE
\ No newline at end of file
diff --git a/chrome/app/vector_icons/task_manager.icon b/chrome/app/vector_icons/task_manager.icon
new file mode 100644
index 0000000..49f1ee9
--- /dev/null
+++ b/chrome/app/vector_icons/task_manager.icon
@@ -0,0 +1,41 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 13.15f, 13.73f,
+H_LINE_TO, 3.65f,
+R_CUBIC_TO, -0.37f, 0, -0.7f, -0.14f, -0.97f, -0.41f,
+R_ARC_TO, 1.33f, 1.33f, 0, 0, 1, -0.41f, -0.97f,
+V_LINE_TO, 3.65f,
+R_CUBIC_TO, 0, -0.38f, 0.14f, -0.71f, 0.41f, -0.98f,
+R_CUBIC_TO, 0.27f, -0.27f, 0.6f, -0.4f, 0.97f, -0.4f,
+R_H_LINE_TO, 9.5f,
+R_CUBIC_TO, 0.38f, 0, 0.7f, 0.13f, 0.97f, 0.4f,
+R_CUBIC_TO, 0.27f, 0.27f, 0.41f, 0.6f, 0.41f, 0.98f,
+R_V_LINE_TO, 8.7f,
+R_CUBIC_TO, 0, 0.38f, -0.14f, 0.7f, -0.41f, 0.97f,
+R_ARC_TO, 1.33f, 1.33f, 0, 0, 1, -0.97f, 0.41f,
+CLOSE,
+MOVE_TO, 3.65f, 5.41f,
+R_H_LINE_TO, 9.5f,
+V_LINE_TO, 3.65f,
+H_LINE_TO, 3.65f,
+CLOSE,
+R_MOVE_TO, 1.7f, 1.2f,
+H_LINE_TO, 3.65f,
+R_V_LINE_TO, 5.74f,
+R_H_LINE_TO, 1.7f,
+CLOSE,
+R_MOVE_TO, 6.09f, 0,
+R_V_LINE_TO, 5.74f,
+R_H_LINE_TO, 1.71f,
+V_LINE_TO, 6.61f,
+CLOSE,
+R_MOVE_TO, -1.2f, 0,
+H_LINE_TO, 6.56f,
+R_V_LINE_TO, 5.74f,
+R_H_LINE_TO, 3.69f,
+CLOSE,
+R_MOVE_TO, 0, 0,
+CLOSE
\ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 77d5dfbe..4c746d4 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -7112,6 +7112,7 @@
       ]
       deps += [
         "//chromeos/services/tts/public/mojom",
+        "//services/accessibility:buildflags",
         "//services/accessibility/public/mojom",
         "//ui/events/ozone/layout:layout",
       ]
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 473261c..993c2b99 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -442,7 +442,14 @@
     {flags_ui::kGenericExperimentChoiceDefault, "", ""},
     {flag_descriptions::kWebXrRuntimeChoiceNone, switches::kWebXrForceRuntime,
      switches::kWebXrRuntimeNone},
-
+#if BUILDFLAG(ENABLE_CARDBOARD)
+    {flag_descriptions::kWebXrRuntimeChoiceCardboard,
+     switches::kWebXrForceRuntime, switches::kWebXrRuntimeCardboard},
+#endif
+#if BUILDFLAG(ENABLE_GVR_SERVICES)
+    {flag_descriptions::kWebXrRuntimeChoiceGVR, switches::kWebXrForceRuntime,
+     switches::kWebXrRuntimeGVR},
+#endif
 #if BUILDFLAG(ENABLE_OPENXR)
     {flag_descriptions::kWebXrRuntimeChoiceOpenXR, switches::kWebXrForceRuntime,
      switches::kWebXrRuntimeOpenXr},
@@ -3716,6 +3723,11 @@
          .name,
      password_manager::features::kPasswordGenerationExperimentVariationOption[3]
          .name}};
+const FeatureEntry::FeatureParam kPasswordGenerationCrossDevice[] = {
+    {password_manager::features::kPasswordGenerationExperimentVariationParam
+         .name,
+     password_manager::features::kPasswordGenerationExperimentVariationOption[4]
+         .name}};
 
 const FeatureEntry::FeatureVariation kPasswordGenerationExperimentVariations[] =
     {
@@ -3727,6 +3739,8 @@
          std::size(kPasswordGenerationTrySomethingNew), nullptr},
         {"Convenience", kPasswordGenerationConvenience,
          std::size(kPasswordGenerationConvenience), nullptr},
+        {"Cross device", kPasswordGenerationCrossDevice,
+         std::size(kPasswordGenerationCrossDevice), nullptr},
 };
 #endif  // !BUILDFLAG(IS_ANDROID)
 
@@ -4968,12 +4982,17 @@
      flag_descriptions::kWebXrIncubationsDescription, kOsAll,
      FEATURE_VALUE_TYPE(device::features::kWebXrIncubations)},
     {"webxr-runtime", flag_descriptions::kWebXrForceRuntimeName,
-     flag_descriptions::kWebXrForceRuntimeDescription, kOsDesktop,
+     flag_descriptions::kWebXrForceRuntimeDescription, kOsDesktop | kOsAndroid,
      MULTI_VALUE_TYPE(kWebXrForceRuntimeChoices)},
 #if BUILDFLAG(IS_ANDROID)
     {"webxr-shared-buffers", flag_descriptions::kWebXrSharedBuffersName,
      flag_descriptions::kWebXrSharedBuffersDescription, kOsAndroid,
      FEATURE_VALUE_TYPE(device::features::kWebXrSharedBuffers)},
+#if BUILDFLAG(ENABLE_OPENXR)
+    {"enable-openxr-android", flag_descriptions::kOpenXRName,
+     flag_descriptions::kOpenXRDescription, kOsAndroid,
+     FEATURE_VALUE_TYPE(device::features::kOpenXR)},
+#endif
 #endif  // BUILDFLAG(IS_ANDROID)
 #endif  // ENABLE_VR
 #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/accessibility/service/DEPS b/chrome/browser/accessibility/service/DEPS
index 9546fb0..5bb8a5e 100644
--- a/chrome/browser/accessibility/service/DEPS
+++ b/chrome/browser/accessibility/service/DEPS
@@ -1,3 +1,4 @@
 include_rules = [
   "+services/accessibility/public/mojom",
+  "+services/accessibility/buildflags.h",
 ]
\ No newline at end of file
diff --git a/chrome/browser/accessibility/service/accessibility_service_router.cc b/chrome/browser/accessibility/service/accessibility_service_router.cc
index 84aacc8..8bf3b6cf 100644
--- a/chrome/browser/accessibility/service/accessibility_service_router.cc
+++ b/chrome/browser/accessibility/service/accessibility_service_router.cc
@@ -6,6 +6,7 @@
 
 #include "content/public/browser/service_process_host.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "services/accessibility/buildflags.h"
 
 namespace ax {
 
@@ -39,11 +40,17 @@
   if (accessibility_service_.is_bound())
     return;
 
+#if BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
   content::ServiceProcessHost::Launch(
       accessibility_service_.BindNewPipeAndPassReceiver(),
       content::ServiceProcessHost::Options()
           .WithDisplayName("Accessibility Service")
           .Pass());
+#else   // !BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
+  LOG(ERROR)
+      << "Accessibility service is missing but should have been launched. Have "
+         "you set the buildflag, `enable_accessibility_service=true`?";
+#endif  // !BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
 }
 
 }  // namespace ax
diff --git a/chrome/browser/android/resource_id.h b/chrome/browser/android/resource_id.h
index 446b77c7..61eac7a 100644
--- a/chrome/browser/android/resource_id.h
+++ b/chrome/browser/android/resource_id.h
@@ -54,6 +54,9 @@
 DECLARE_RESOURCE_ID(IDR_ANDROID_MESSAGE_SETTINGS, R.drawable.settings_cog)
 DECLARE_RESOURCE_ID(IDR_ANDROID_MESSAGE_SAFETY_CHECK, R.drawable.safety_check)
 DECLARE_RESOURCE_ID(IDR_ANDROID_MESSAGE_SHIELD, R.drawable.shield)
+DECLARE_RESOURCE_ID(IDR_ANDROID_MESSAGE_SHIELD_BLUE,
+                    R.drawable.blue_google_shield)
+DECLARE_RESOURCE_ID(IDR_ANDROID_MESSAGE_SHIELD_GRAY, R.drawable.gray_shield)
 DECLARE_RESOURCE_ID(IDR_ANDORID_MESSAGE_PASSWORD_MANAGER_ERROR,
                     R.drawable.ic_key_error)
 DECLARE_RESOURCE_ID(IDR_ANDROID_IC_MOBILE_FRIENDLY,
diff --git a/chrome/browser/ash/events/event_rewriter_delegate_impl.cc b/chrome/browser/ash/events/event_rewriter_delegate_impl.cc
index 5393914..25c538a 100644
--- a/chrome/browser/ash/events/event_rewriter_delegate_impl.cc
+++ b/chrome/browser/ash/events/event_rewriter_delegate_impl.cc
@@ -171,12 +171,17 @@
   suppress_meta_top_row_key_rewrites_ = should_suppress;
 }
 
-void EventRewriterDelegateImpl::RecordEventRemappedToRightClick() {
+void EventRewriterDelegateImpl::RecordEventRemappedToRightClick(
+    bool alt_based_right_click) {
   PrefService* const pref_service = GetPrefService();
   if (!pref_service) {
     return;
   }
-  pref_service->SetBoolean(prefs::kEventRemappedToRightClick, true);
+  const auto* pref_name = alt_based_right_click
+                              ? prefs::kAltEventRemappedToRightClick
+                              : prefs::kSearchEventRemappedToRightClick;
+  int count = pref_service->GetInteger(pref_name);
+  pref_service->SetInteger(pref_name, ++count);
 }
 
 void EventRewriterDelegateImpl::RecordSixPackEventRewrite(
diff --git a/chrome/browser/ash/events/event_rewriter_delegate_impl.h b/chrome/browser/ash/events/event_rewriter_delegate_impl.h
index 9d15e7f..166f1fd8 100644
--- a/chrome/browser/ash/events/event_rewriter_delegate_impl.h
+++ b/chrome/browser/ash/events/event_rewriter_delegate_impl.h
@@ -49,7 +49,7 @@
   bool NotifyDeprecatedSixPackKeyRewrite(ui::KeyboardCode key_code) override;
   void SuppressModifierKeyRewrites(bool should_suppress) override;
   void SuppressMetaTopRowKeyComboRewrites(bool should_suppress) override;
-  void RecordEventRemappedToRightClick() override;
+  void RecordEventRemappedToRightClick(bool alt_based_right_click) override;
   void RecordSixPackEventRewrite(ui::KeyboardCode key_code,
                                  bool alt_based) override;
 
diff --git a/chrome/browser/ash/events/event_rewriter_unittest.cc b/chrome/browser/ash/events/event_rewriter_unittest.cc
index 8724315..1b47bda 100644
--- a/chrome/browser/ash/events/event_rewriter_unittest.cc
+++ b/chrome/browser/ash/events/event_rewriter_unittest.cc
@@ -3190,11 +3190,17 @@
 
 TEST_F(EventRewriterTest, RecordEventRemappedToRightClick) {
   Preferences::RegisterProfilePrefs(prefs()->registry());
-  BooleanPrefMember remap_to_right_click;
-  remap_to_right_click.Init(prefs::kEventRemappedToRightClick, prefs());
-  remap_to_right_click.SetValue(false);
-  delegate_->RecordEventRemappedToRightClick();
-  EXPECT_EQ(true, prefs()->GetBoolean(prefs::kEventRemappedToRightClick));
+  IntegerPrefMember alt_remap_to_right_click;
+  IntegerPrefMember search_remap_to_right_click;
+  alt_remap_to_right_click.Init(prefs::kAltEventRemappedToRightClick, prefs());
+  alt_remap_to_right_click.SetValue(0);
+  search_remap_to_right_click.Init(prefs::kSearchEventRemappedToRightClick,
+                                   prefs());
+  search_remap_to_right_click.SetValue(0);
+  delegate_->RecordEventRemappedToRightClick(/*alt_based_right_click=*/false);
+  EXPECT_EQ(1, prefs()->GetInteger(prefs::kSearchEventRemappedToRightClick));
+  delegate_->RecordEventRemappedToRightClick(/*alt_based_right_click=*/true);
+  EXPECT_EQ(1, prefs()->GetInteger(prefs::kAltEventRemappedToRightClick));
 }
 
 TEST_F(
@@ -5410,7 +5416,7 @@
   }
   void SuppressModifierKeyRewrites(bool should_suppress) override {}
   void SuppressMetaTopRowKeyComboRewrites(bool should_suppress) override {}
-  void RecordEventRemappedToRightClick() override {}
+  void RecordEventRemappedToRightClick(bool alt_based_right_click) override {}
   void RecordSixPackEventRewrite(ui::KeyboardCode key_code,
                                  bool alt_based) override {}
 
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
index 8fe5d05..0716d1b 100644
--- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
+++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
@@ -2729,10 +2729,19 @@
                 ash::file_manager::kChromeUIFileManagerUntrustedURL) {
               const std::string* script = value.FindString("data");
               EXPECT_TRUE(script);
-              *output =
-                  content::EvalJs(frame, *script,
-                                  content::EXECUTE_SCRIPT_USE_MANUAL_REPLY)
-                      .ExtractString();
+
+              content::DOMMessageQueue message_queue;
+              EXPECT_TRUE(content::ExecJs(frame, *script));
+
+              std::string json;
+              EXPECT_TRUE(message_queue.WaitForMessage(&json));
+
+              base::Value result =
+                  base::JSONReader::Read(json, base::JSON_ALLOW_TRAILING_COMMAS)
+                      .value();
+
+              EXPECT_TRUE(result.is_string());
+              *output = result.GetString();
               found = true;
               return content::RenderFrameHost::FrameIterationAction::kStop;
             }
diff --git a/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.cc b/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.cc
index abf325d..935d614 100644
--- a/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.cc
+++ b/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.cc
@@ -38,12 +38,4 @@
     service->FinalizeUnlock(success);
 }
 
-proximity_auth::ProximityAuthPrefManager*
-ChromeProximityAuthClient::GetPrefManager() {
-  EasyUnlockService* service = EasyUnlockService::Get(profile_);
-  if (service)
-    return service->GetProximityAuthPrefManager();
-  return nullptr;
-}
-
 }  // namespace ash
diff --git a/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.h b/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.h
index d98b1f3b..56dfe06 100644
--- a/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.h
+++ b/chrome/browser/ash/login/easy_unlock/chrome_proximity_auth_client.h
@@ -27,7 +27,6 @@
   // proximity_auth::ProximityAuthClient:
   void UpdateSmartLockState(SmartLockState state) override;
   void FinalizeUnlock(bool success) override;
-  proximity_auth::ProximityAuthPrefManager* GetPrefManager() override;
 
  private:
   const raw_ptr<Profile, ExperimentalAsh> profile_;
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_service.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_service.cc
index 91d3145..03a114e 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_service.cc
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_service.cc
@@ -263,11 +263,6 @@
   return std::string();
 }
 
-proximity_auth::ProximityAuthPrefManager*
-EasyUnlockService::GetProximityAuthPrefManager() {
-  return pref_manager_.get();
-}
-
 const multidevice::RemoteDeviceRefList
 EasyUnlockService::GetRemoteDevicesForTesting() const {
   if (!proximity_auth_system_) {
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_service.h b/chrome/browser/ash/login/easy_unlock/easy_unlock_service.h
index f8daf47b..9ace9c4 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_service.h
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_service.h
@@ -37,7 +37,6 @@
 }  // namespace user_prefs
 
 namespace proximity_auth {
-class ProximityAuthPrefManager;
 class ProximityAuthProfilePrefManager;
 class ProximityAuthSystem;
 }  // namespace proximity_auth
@@ -115,10 +114,6 @@
   // the UnlockManager is uninitialized.
   std::string GetLastRemoteStatusUnlockForLogging();
 
-  // Returns the ProximityAuthPrefManager, responsible for managing all
-  // EasyUnlock preferences.
-  proximity_auth::ProximityAuthPrefManager* GetProximityAuthPrefManager();
-
   // Retrieves the remote device list stored for the account in
   // |proximity_auth_system_|.
   const multidevice::RemoteDeviceRefList GetRemoteDevicesForTesting() const;
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_service_unittest.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_service_unittest.cc
index 35d6db19..09f508c 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_service_unittest.cc
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_service_unittest.cc
@@ -387,12 +387,6 @@
   EXPECT_FALSE(easy_unlock_service_->IsAllowed());
 }
 
-TEST_F(EasyUnlockServiceTest, GetProximityAuthPrefManager) {
-  InitializeService(true /* should_initialize_all_dependencies */);
-
-  EXPECT_TRUE(easy_unlock_service_->GetProximityAuthPrefManager());
-}
-
 TEST_F(EasyUnlockServiceTest, GetRemoteDevices) {
   InitializeService(true /* should_initialize_all_dependencies */);
   VerifyGetRemoteDevices(true /* are_remote_devices_expected */);
diff --git a/chrome/browser/ash/login/screens/core_oobe.cc b/chrome/browser/ash/login/screens/core_oobe.cc
index 810d91b6..c243fbf 100644
--- a/chrome/browser/ash/login/screens/core_oobe.cc
+++ b/chrome/browser/ash/login/screens/core_oobe.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "chrome/browser/ash/login/screens/core_oobe.h"
+#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/public/cpp/tablet_mode.h"
 #include "ash/shell.h"
@@ -74,15 +75,36 @@
 
 void CoreOobe::ShowScreenWithData(const OobeScreenId& screen,
                                   absl::optional<base::Value::Dict> data) {
-  // Defer until fully initialized.
-  if (ui_init_state_ != CoreOobeView::UiState::kFullyInitialized) {
-    pending_calls_.show_screen_with_data =
-        base::BindOnce(&CoreOobe::ShowScreenWithData, base::Unretained(this),
-                       screen, std::move(data));
-    return;
-  }
+  const bool is_priority_screen = view_ && view_->IsPriorityScreen(screen.name);
 
-  // Decide whether or not to show the screen based on availability.
+  switch (ui_init_state_) {
+    case CoreOobeView::UiState::kUninitialized:
+    case CoreOobeView::UiState::kCoreHandlerInitialized:
+      // In this early state, we defer all show screen calls.
+      pending_calls_.show_screen_with_data =
+          base::BindOnce(&CoreOobe::ShowScreenWithData, base::Unretained(this),
+                         screen, std::move(data));
+      return;
+    case CoreOobeView::UiState::kPriorityScreensLoaded:
+      // Priority screens can be shown at this point. All others are deferred.
+      if (!is_priority_screen || !features::IsOobeLazyLoadingEnabled()) {
+        pending_calls_.show_screen_with_data =
+            base::BindOnce(&CoreOobe::ShowScreenWithData,
+                           base::Unretained(this), screen, std::move(data));
+        return;
+      }
+      break;
+    case CoreOobeView::UiState::kFullyInitialized:
+      // All screens can be shown at this point.
+      break;
+  }
+  // Clear any pending calls that could exist. (An edge case when a priority
+  // screen is shown when a regular screen has been deferred. No known instances
+  // in the codebase) Mostly a sanity check.
+  pending_calls_.show_screen_with_data.Reset();
+
+  // Since CoreOobeHandler is always created before us, this call can never be
+  // silently dropped under normal circumstances.
   if (view_) {
     view_->ShowScreenWithData(screen, std::move(data));
   }
@@ -214,9 +236,16 @@
       CHECK(ui_init_state_ == CoreOobeView::UiState::kUninitialized);
       ui_init_state_ = CoreOobeView::UiState::kCoreHandlerInitialized;
       break;
+    case CoreOobeView::UiState::kPriorityScreensLoaded:
+      CHECK(ui_init_state_ == CoreOobeView::UiState::kCoreHandlerInitialized);
+      ui_init_state_ = CoreOobeView::UiState::kPriorityScreensLoaded;
+      if (features::IsOobeLazyLoadingEnabled()) {
+        MaybeShowPriorityScreen();
+      }
+      break;
     case CoreOobeView::UiState::kFullyInitialized:
       // OOBE is fully loaded.
-      CHECK(ui_init_state_ == CoreOobeView::UiState::kCoreHandlerInitialized);
+      CHECK(ui_init_state_ == CoreOobeView::UiState::kPriorityScreensLoaded);
       ui_init_state_ = CoreOobeView::UiState::kFullyInitialized;
       // Execute deferred JavaScript in the CoreHandler first.
       ExecutePendingCalls();
@@ -245,6 +274,17 @@
   }
 }
 
+void CoreOobe::MaybeShowPriorityScreen() {
+  CHECK(features::IsOobeLazyLoadingEnabled());
+  CHECK(ui_init_state_ == CoreOobeView::UiState::kPriorityScreensLoaded);
+  // Run any pending show screen call. If the screen is not supported for
+  // prioritization, ShowScreenWithData will defer it and it will be shown
+  // once the UI fully initializes.
+  if (pending_calls_.show_screen_with_data) {
+    std::move(pending_calls_.show_screen_with_data).Run();
+  }
+}
+
 CoreOobe::PendingFrontendCalls::PendingFrontendCalls() = default;
 CoreOobe::PendingFrontendCalls::~PendingFrontendCalls() = default;
 
diff --git a/chrome/browser/ash/login/screens/core_oobe.h b/chrome/browser/ash/login/screens/core_oobe.h
index e8058e0..3e6fa94 100644
--- a/chrome/browser/ash/login/screens/core_oobe.h
+++ b/chrome/browser/ash/login/screens/core_oobe.h
@@ -111,6 +111,11 @@
   // the |CoreOobeHandler| notifies us with |UiState::kFullyInitialized|
   void ExecutePendingCalls();
 
+  // If there is a pending ShowScreen call for a supported priority screen, we
+  // will show it as soon as the state |UiState::kPriorityScreensLoaded| is
+  // reached.
+  void MaybeShowPriorityScreen();
+
   class PendingFrontendCalls {
    public:
     PendingFrontendCalls();
diff --git a/chrome/browser/ash/login/screens/welcome_screen_browsertest.cc b/chrome/browser/ash/login/screens/welcome_screen_browsertest.cc
index ed1f1c4..61992ab 100644
--- a/chrome/browser/ash/login/screens/welcome_screen_browsertest.cc
+++ b/chrome/browser/ash/login/screens/welcome_screen_browsertest.cc
@@ -730,7 +730,8 @@
 
 // Tests that the ChromeVox hint can be spoken, even if the necessary voice
 // hasn't loaded when the idle detector has fired.
-IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, VoicesChanged) {
+// TODO(b/283990894) - Re-enable test.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, DISABLED_VoicesChanged) {
   TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
   const std::string set_no_english_voice = R"(
   chrome.tts.getVoices = function(callback) {
diff --git a/chrome/browser/ash/login/test/oobe_screens_utils.cc b/chrome/browser/ash/login/test/oobe_screens_utils.cc
index 802f01e2..26e6742 100644
--- a/chrome/browser/ash/login/test/oobe_screens_utils.cc
+++ b/chrome/browser/ash/login/test/oobe_screens_utils.cc
@@ -49,6 +49,11 @@
 
 void WaitForWelcomeScreen() {
   WaitFor(WelcomeView::kScreenId);
+  // Wait until OOBE is fully initialized and the 'Get Started' button enabled.
+  OobeJS()
+      .CreateEnabledWaiter(true /* enabled */,
+                           {"connect", "welcomeScreen", "getStarted"})
+      ->Wait();
 }
 
 void TapWelcomeNext() {
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.cc
index a5b89fc2..6c230e4 100644
--- a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.cc
+++ b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.cc
@@ -7,9 +7,11 @@
 #include <memory>
 
 #include "base/functional/bind.h"
+#include "base/sequence_checker.h"
 #include "base/time/time.h"
 #include "chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_prefs.h"
 #include "chrome/browser/chromeos/reporting/metric_default_utils.h"
+#include "chromeos/ash/components/login/session/session_termination_manager.h"
 #include "components/reporting/metrics/collector_base.h"
 #include "components/reporting/metrics/metric_rate_controller.h"
 #include "components/reporting/metrics/metric_report_queue.h"
@@ -33,11 +35,17 @@
           ::ash::reporting::kReportAppUsageCollectionRateMs,
           metrics::kDefaultAppUsageTelemetryCollectionRate,
           /*rate_unit_to_ms=*/1)) {
+  ::ash::SessionTerminationManager::Get()->AddObserver(this);
   rate_controller_->Start();
 }
 
-AppUsageTelemetryPeriodicCollector::~AppUsageTelemetryPeriodicCollector() =
-    default;
+AppUsageTelemetryPeriodicCollector::~AppUsageTelemetryPeriodicCollector() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  // `SessionTerminationManager` outlives the collector so we unregister it as
+  // an observer on destruction.
+  ::ash::SessionTerminationManager::Get()->RemoveObserver(this);
+}
 
 void AppUsageTelemetryPeriodicCollector::OnMetricDataCollected(
     bool is_event_driven,
@@ -58,4 +66,14 @@
   return true;
 }
 
+void AppUsageTelemetryPeriodicCollector::OnSessionWillBeTerminated() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  // Make an attempt to collect any usage data that was recently recorded from
+  // the `AppUsageObserver` so we can prevent data staleness should the profile
+  // be inaccessible for too long.
+  Collect(/*is_event_driven=*/false);
+  rate_controller_.reset();
+}
+
 }  // namespace reporting
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.h b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.h
index e33f6316..0aefa40 100644
--- a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.h
+++ b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector.h
@@ -8,6 +8,9 @@
 #include <memory>
 
 #include "base/allocator/partition_allocator/pointers/raw_ptr.h"
+#include "base/sequence_checker.h"
+#include "base/thread_annotations.h"
+#include "chromeos/ash/components/login/session/session_termination_manager.h"
 #include "components/reporting/metrics/collector_base.h"
 #include "components/reporting/metrics/metric_report_queue.h"
 #include "components/reporting/metrics/reporting_settings.h"
@@ -20,7 +23,9 @@
 // similar to the `PeriodicCollector` but only controls the collection rate
 // based on the respective policy setting. This is to avoid data staleness
 // because we do not associate usage data with a timestamp today.
-class AppUsageTelemetryPeriodicCollector : public CollectorBase {
+class AppUsageTelemetryPeriodicCollector
+    : public CollectorBase,
+      public ::ash::SessionTerminationManager::Observer {
  public:
   AppUsageTelemetryPeriodicCollector(Sampler* sampler,
                                      MetricReportQueue* metric_report_queue,
@@ -40,11 +45,17 @@
   bool CanCollect() const override;
 
  private:
+  // ::ash::SessionTerminationManager::Observer:
+  void OnSessionWillBeTerminated() override;
+
+  SEQUENCE_CHECKER(sequence_checker_);
+
   // `MetricReportQueue` used for enqueueing data collected by the sampler.
   const raw_ptr<MetricReportQueue> metric_report_queue_;
 
   // Component used to control collection rate based on the policy setting.
-  const std::unique_ptr<MetricRateController> rate_controller_;
+  std::unique_ptr<MetricRateController> rate_controller_
+      GUARDED_BY_CONTEXT(sequence_checker_);
 };
 
 }  // namespace reporting
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector_unittest.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector_unittest.cc
index f632b17a..5308891 100644
--- a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector_unittest.cc
+++ b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_periodic_collector_unittest.cc
@@ -9,6 +9,8 @@
 #include "base/test/task_environment.h"
 #include "chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_prefs.h"
 #include "chrome/browser/chromeos/reporting/metric_default_utils.h"
+#include "chromeos/ash/components/dbus/session_manager/session_manager_client.h"
+#include "chromeos/ash/components/login/session/session_termination_manager.h"
 #include "components/reporting/metrics/fakes/fake_metric_report_queue.h"
 #include "components/reporting/metrics/fakes/fake_reporting_settings.h"
 #include "components/reporting/metrics/fakes/fake_sampler.h"
@@ -23,9 +25,14 @@
 
 class AppUsageTelemetryPeriodicCollectorTest : public ::testing::Test {
  protected:
+  void SetUp() override {
+    ::ash::SessionManagerClient::InitializeFakeInMemory();
+  }
+
   base::test::SingleThreadTaskEnvironment task_environment_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
 
+  ::ash::SessionTerminationManager session_termination_manager_;
   test::FakeReportingSettings reporting_settings_;
   test::FakeSampler sampler_;
   test::FakeMetricReportQueue metric_report_queue_;
@@ -40,8 +47,8 @@
 
   // Fast forward timer to trigger telemetry collection and verify data being
   // reported.
-  AppUsageTelemetryPeriodicCollector collector(&sampler_, &metric_report_queue_,
-                                               &reporting_settings_);
+  const AppUsageTelemetryPeriodicCollector collector(
+      &sampler_, &metric_report_queue_, &reporting_settings_);
   task_environment_.FastForwardBy(
       metrics::kDefaultAppUsageTelemetryCollectionRate);
   ASSERT_THAT(sampler_.GetNumCollectCalls(), Eq(1));
@@ -66,8 +73,8 @@
 
   // Fast forward timer to trigger telemetry collection and verify data being
   // reported.
-  AppUsageTelemetryPeriodicCollector collector(&sampler_, &metric_report_queue_,
-                                               &reporting_settings_);
+  const AppUsageTelemetryPeriodicCollector collector(
+      &sampler_, &metric_report_queue_, &reporting_settings_);
   task_environment_.FastForwardBy(kCollectionRate);
   ASSERT_THAT(sampler_.GetNumCollectCalls(), Eq(1));
   const auto& enqueued_metric_data =
@@ -88,8 +95,8 @@
   MetricData metric_data;
   metric_data.mutable_telemetry_data();
   sampler_.SetMetricData(std::move(metric_data));
-  AppUsageTelemetryPeriodicCollector collector(&sampler_, &metric_report_queue_,
-                                               &reporting_settings_);
+  const AppUsageTelemetryPeriodicCollector collector(
+      &sampler_, &metric_report_queue_, &reporting_settings_);
 
   // Update collection rate setting before triggering collection. This is
   // so the rate controller can pick up updated setting value on collection and
@@ -133,8 +140,8 @@
 
   // Fast forward timer to trigger telemetry collection and verify no data is
   // being reported.
-  AppUsageTelemetryPeriodicCollector collector(&sampler_, &metric_report_queue_,
-                                               &reporting_settings_);
+  const AppUsageTelemetryPeriodicCollector collector(
+      &sampler_, &metric_report_queue_, &reporting_settings_);
   task_environment_.FastForwardBy(
       metrics::kDefaultAppUsageTelemetryCollectionRate);
   ASSERT_THAT(sampler_.GetNumCollectCalls(), Eq(1));
@@ -160,5 +167,25 @@
   ASSERT_TRUE(metric_report_queue_.IsEmpty());
 }
 
+TEST_F(AppUsageTelemetryPeriodicCollectorTest, OnSessionTermination) {
+  // Set up test sampler to report data.
+  MetricData metric_data;
+  metric_data.mutable_telemetry_data();
+  sampler_.SetMetricData(std::move(metric_data));
+
+  // Set up periodic collector and terminate session.
+  const AppUsageTelemetryPeriodicCollector collector(
+      &sampler_, &metric_report_queue_, &reporting_settings_);
+  session_termination_manager_.StopSession(
+      ::login_manager::SessionStopReason::USER_REQUESTS_SIGNOUT);
+
+  // Verify data being reported.
+  ASSERT_THAT(sampler_.GetNumCollectCalls(), Eq(1));
+  const auto& enqueued_metric_data =
+      metric_report_queue_.GetMetricDataReported();
+  ASSERT_TRUE(enqueued_metric_data.has_timestamp_ms());
+  ASSERT_TRUE(enqueued_metric_data.has_telemetry_data());
+}
+
 }  // namespace
 }  // namespace reporting
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_sampler_browsertest.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_sampler_browsertest.cc
index 5c7382f..3dadd53 100644
--- a/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_sampler_browsertest.cc
+++ b/chrome/browser/ash/policy/reporting/metrics_reporting/apps/app_usage_telemetry_sampler_browsertest.cc
@@ -33,6 +33,7 @@
 #include "chrome/browser/web_applications/user_display_mode.h"
 #include "chrome/browser/web_applications/web_app_id.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chromeos/ash/components/login/session/session_termination_manager.h"
 #include "chromeos/dbus/missive/missive_client_test_observer.h"
 #include "components/app_constants/constants.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
@@ -52,6 +53,7 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/mojom/manifest/display_mode.mojom-shared.h"
+#include "third_party/cros_system_api/dbus/login_manager/dbus-constants.h"
 #include "url/gurl.h"
 
 using ::testing::AllOf;
@@ -387,5 +389,36 @@
   ASSERT_FALSE(missive_observer.HasNewEnqueuedRecords());
 }
 
+IN_PROC_BROWSER_TEST_F(AppUsageTelemetrySamplerBrowserTest,
+                       PRE_ReportUsageDataOnSessionTermination) {
+  // Dummy case that sets up the affiliated user through SetUpOnMainThread
+  // PRE-condition.
+}
+
+IN_PROC_BROWSER_TEST_F(AppUsageTelemetrySamplerBrowserTest,
+                       ReportUsageDataOnSessionTermination) {
+  // Install web app and simulate its usage.
+  const auto& app_id = InstallStandaloneWebApp(GURL(kWebAppUrl));
+  static constexpr base::TimeDelta kAppUsageDuration = base::Minutes(2);
+  ::chromeos::MissiveClientTestObserver missive_observer(
+      base::BindRepeating(&IsAppUsageTelemetry));
+  SimulateAppUsage(app_id, kAppUsageDuration);
+
+  // Terminate session and verify data being enqueued.
+  ::ash::SessionTerminationManager::Get()->StopSession(
+      ::login_manager::SessionStopReason::USER_REQUESTS_SIGNOUT);
+  const auto [priority, record] = missive_observer.GetNextEnqueuedRecord();
+  const auto metric_data = AssertAppUsageTelemetryData(priority, record);
+
+  // Data reported only includes usage from the web app. Derivative usage from
+  // the native Chrome component application (since these leverage the browser)
+  // should be filtered out by the policy setting.
+  const auto& app_usage_data =
+      metric_data.telemetry_data().app_telemetry().app_usage_data();
+  ASSERT_THAT(app_usage_data.app_usage().size(), Eq(1));
+  const auto& app_usage = app_usage_data.app_usage().at(0);
+  VerifyAppUsage(app_usage, app_id, kAppUsageDuration);
+}
+
 }  // namespace
 }  // namespace reporting
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_manager_unittest.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_manager_unittest.cc
index 271796b..3bb990f 100644
--- a/chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_manager_unittest.cc
+++ b/chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_manager_unittest.cc
@@ -22,6 +22,8 @@
 #include "chrome/browser/chromeos/reporting/metric_default_utils.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/test/base/testing_profile.h"
+#include "chromeos/ash/components/dbus/session_manager/session_manager_client.h"
+#include "chromeos/ash/components/login/session/session_termination_manager.h"
 #include "chromeos/ash/components/settings/cros_settings_names.h"
 #include "components/reporting/client/report_queue_configuration.h"
 #include "components/reporting/metrics/collector_base.h"
@@ -280,6 +282,9 @@
         ->SetAppPlatformMetricsServiceForTesting(
             GetAppPlatformMetricsService());
 
+    // Initialize fake session manager client. Needed for setting up downstream
+    // app metric reporting components.
+    ::ash::SessionManagerClient::InitializeFakeInMemory();
     mock_delegate_ = std::make_unique<::testing::NiceMock<MockDelegate>>();
     info_queue_ptr_ = CreateMockMetricReportQueueHelper(
         mock_delegate_.get(), EventType::kDevice, Destination::INFO_METRIC,
@@ -304,6 +309,7 @@
         .WillByDefault(Return(ByMove(std::move(telemetry_queue))));
   }
 
+  ::ash::SessionTerminationManager session_termination_manager_;
   raw_ptr<test::FakeMetricReportQueue, ExperimentalAsh> info_queue_ptr_;
   raw_ptr<test::FakeMetricReportQueue, ExperimentalAsh> telemetry_queue_ptr_;
   raw_ptr<test::FakeMetricReportQueue, ExperimentalAsh> event_queue_ptr_;
diff --git a/chrome/browser/ash/preferences.cc b/chrome/browser/ash/preferences.cc
index 6b5fe32..d1c5b05 100644
--- a/chrome/browser/ash/preferences.cc
+++ b/chrome/browser/ash/preferences.cc
@@ -347,7 +347,8 @@
   // device.
   registry->RegisterBooleanPref(prefs::kSendFunctionKeys, false);
 
-  registry->RegisterBooleanPref(prefs::kEventRemappedToRightClick, false);
+  registry->RegisterIntegerPref(prefs::kAltEventRemappedToRightClick, 0);
+  registry->RegisterIntegerPref(prefs::kSearchEventRemappedToRightClick, 0);
   registry->RegisterIntegerPref(prefs::kKeyEventRemappedToSixPackDelete, 0);
   registry->RegisterIntegerPref(prefs::kKeyEventRemappedToSixPackEnd, 0);
   registry->RegisterIntegerPref(prefs::kKeyEventRemappedToSixPackHome, 0);
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
index 78d55e4..ecd3b2e7 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
@@ -23,12 +23,17 @@
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
 #include "chrome/browser/lifetime/browser_shutdown.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/signin/signin_util.h"
 #include "chrome/browser/sync/sync_service_factory.h"
+#include "chrome/common/pref_names.h"
 #include "components/browsing_data/core/browsing_data_policies_utils.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/keep_alive_registry/keep_alive_types.h"
 #include "components/keep_alive_registry/scoped_keep_alive.h"
 #include "components/prefs/pref_service.h"
+#include "components/signin/public/base/signin_pref_names.h"
+#include "components/sync/service/sync_service.h"
+#include "components/sync/service/sync_user_settings.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -52,7 +57,7 @@
 namespace {
 
 constexpr int kInitialCleanupDelayInSeconds = 15;
-constexpr int kDefaultCleanupPeriodInHours = 1;
+constexpr int kDefaultCleanupPeriodInMinutes = 30;
 
 using ScheduledRemovalSettings =
     ChromeBrowsingDataLifetimeManager::ScheduledRemovalSettings;
@@ -260,6 +265,24 @@
   return result;
 }
 
+// Returns the sync types that might be reuired to be disabled for the browsing
+// data types specified in the policy value.
+syncer::UserSelectableTypeSet GetSyncTypesForPolicyPref(
+    Profile* profile,
+    const std::string& pref_name) {
+  DCHECK(pref_name == browsing_data::prefs::kBrowsingDataLifetime ||
+         pref_name == browsing_data::prefs::kClearBrowsingDataOnExitList);
+
+  const base::Value& data_lifetime_value =
+      profile->GetPrefs()->GetValue(pref_name);
+
+  return pref_name == browsing_data::prefs::kBrowsingDataLifetime
+             ? browsing_data::GetSyncTypesForBrowsingDataLifetime(
+                   data_lifetime_value)
+             : browsing_data::GetSyncTypesForClearBrowsingData(
+                   data_lifetime_value);
+}
+
 }  // namespace
 
 namespace browsing_data {
@@ -305,7 +328,9 @@
     bool keep_browser_alive) {
   const base::Value::List& data_types = profile_->GetPrefs()->GetList(
       browsing_data::prefs::kClearBrowsingDataOnExitList);
-  if (!data_types.empty() && !SyncServiceFactory::IsSyncAllowed(profile_)) {
+
+  if (IsConditionSatisfiedForBrowsingDataRemoval(GetSyncTypesForPolicyPref(
+          profile_, browsing_data::prefs::kClearBrowsingDataOnExitList))) {
     profile_->GetPrefs()->SetBoolean(
         browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending, true);
     auto* remover = profile_->GetBrowsingDataRemover();
@@ -338,14 +363,24 @@
 }
 
 void ChromeBrowsingDataLifetimeManager::StartScheduledBrowsingDataRemoval() {
+  content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT})
+      ->PostDelayedTask(FROM_HERE,
+                        base::BindOnce(&ChromeBrowsingDataLifetimeManager::
+                                           StartScheduledBrowsingDataRemoval,
+                                       weak_ptr_factory_.GetWeakPtr()),
+                        base::Minutes(kDefaultCleanupPeriodInMinutes));
+
+  if (!IsConditionSatisfiedForBrowsingDataRemoval(GetSyncTypesForPolicyPref(
+          profile_, browsing_data::prefs::kBrowsingDataLifetime))) {
+    return;
+  }
+
   content::BrowsingDataRemover* remover = profile_->GetBrowsingDataRemover();
 
   for (auto& removal_settings : scheduled_removals_settings_) {
-    if (removal_settings.time_to_live_in_hours <= 0)
+    if (removal_settings.time_to_live_in_hours <= 0) {
       continue;
-
-    if (SyncServiceFactory::IsSyncAllowed(profile_))
-      continue;
+    }
 
     auto deletion_end_time = end_time_for_testing_.value_or(
         base::Time::Now() -
@@ -359,8 +394,9 @@
       for (const auto& url : GetOpenedUrls(profile_)) {
         std::string domain = GetDomainAndRegistry(
             url, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
-        if (domain.empty())
+        if (domain.empty()) {
           domain = url.host();  // IP address or internal hostname.
+        }
         filter_builder->AddRegisterableDomain(domain);
       }
       remover->RemoveWithFilterAndReply(
@@ -385,10 +421,48 @@
                     remover, /*filterable_deletion=*/false, profile_));
     }
   }
-  content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT})
-      ->PostDelayedTask(FROM_HERE,
-                        base::BindOnce(&ChromeBrowsingDataLifetimeManager::
-                                           StartScheduledBrowsingDataRemoval,
-                                       weak_ptr_factory_.GetWeakPtr()),
-                        base::Hours(kDefaultCleanupPeriodInHours));
+}
+
+bool ChromeBrowsingDataLifetimeManager::
+    IsConditionSatisfiedForBrowsingDataRemoval(
+        const syncer::UserSelectableTypeSet sync_types) {
+  bool sync_disabled = !SyncServiceFactory::IsSyncAllowed(profile_);
+  // Return the state of sync if
+  // `features::kDataRetentionPoliciesDisableSyncTypesNeeded` is disabled or if
+  // sync is already disabled.
+  if (!browsing_data::IsPolicyDependencyEnabled() || sync_disabled) {
+    return sync_disabled;
+  }
+
+#if !BUILDFLAG(IS_CHROMEOS)
+  // Allow clearing data if browser signin is disabled.
+  if (!profile_->GetPrefs()->GetBoolean(prefs::kSigninAllowed)) {
+    return true;
+  }
+  // If signin will be disabled on next startup, delay the browsing data
+  // clearing until then.
+  if (!profile_->GetPrefs()->GetBoolean(prefs::kSigninAllowedOnNextStartup)) {
+    profile_->GetPrefs()->SetBoolean(
+        browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending, true);
+    return false;
+  }
+#endif
+
+  // Check that sync types have been disabled if neither sync nor browser sign
+  // in is disabled.
+  syncer::SyncService* sync_service =
+      SyncServiceFactory::GetForProfile(profile_);
+
+  // If the sync service is not available, data can be safely cleared as it is
+  // not synced.
+  if (!sync_service) {
+    return true;
+  }
+
+  for (syncer::UserSelectableType type : sync_types) {
+    if (!sync_service->GetUserSettings()->IsTypeManagedByPolicy(type)) {
+      return false;
+    }
+  }
+  return true;
 }
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h
index bd90f792..dd55fbc 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h
@@ -14,6 +14,7 @@
 #include "base/time/time.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/prefs/pref_change_registrar.h"
+#include "components/sync/base/user_selectable_type.h"
 #include "content/public/browser/browsing_data_remover.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
@@ -94,6 +95,12 @@
   absl::optional<base::Time> end_time_for_testing_;
   base::WeakPtrFactory<ChromeBrowsingDataLifetimeManager> weak_ptr_factory_{
       this};
+
+  // Checks that the conditions needed to clear the browsing data types are
+  // satisfied. 'sync_types' are checked if neither sync nor
+  // browser sign in are disabled.
+  bool IsConditionSatisfiedForBrowsingDataRemoval(
+      const syncer::UserSelectableTypeSet sync_types);
 };
 
 #endif  // CHROME_BROWSER_BROWSING_DATA_CHROME_BROWSING_DATA_LIFETIME_MANAGER_H_
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
index 0e511638..82cda95c 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
@@ -29,6 +29,7 @@
 #include "components/autofill/core/browser/autofill_test_utils.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
+#include "components/browsing_data/core/browsing_data_policies_utils.h"
 #include "components/browsing_data/core/features.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -36,7 +37,9 @@
 #include "components/history/core/browser/history_types.h"
 #include "components/keyed_service/core/service_access_type.h"
 #include "components/prefs/testing_pref_service.h"
+#include "components/signin/public/base/signin_pref_names.h"
 #include "components/sync/base/pref_names.h"
+#include "components/sync/base/sync_prefs.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browsing_data_filter_builder.h"
 #include "content/public/browser/browsing_data_remover.h"
@@ -71,6 +74,18 @@
 
 enum class BrowserType { Default, Incognito };
 
+// The precondition required to delete browsing data.
+enum class BrowsingDataDeletionCondition {
+  SyncDisabled,
+  BrowserSigninDisabled
+};
+
+struct FeatureConditions {
+  bool feature_enabled;
+  BrowsingDataDeletionCondition data_deletion_condition;
+  BrowserType browser_type;
+};
+
 constexpr std::array<const char*, 7> kSiteDataTypes{
     "Cookie", "LocalStorage",  "SessionStorage", "IndexedDb",
     "WebSql", "ServiceWorker", "CacheStorage"};
@@ -78,19 +93,36 @@
 }  // namespace
 
 class ChromeBrowsingDataLifetimeManagerTest
-    : public BrowsingDataRemoverBrowserTestBase {
+    : public BrowsingDataRemoverBrowserTestBase,
+      public testing::WithParamInterface<FeatureConditions> {
  protected:
   ChromeBrowsingDataLifetimeManagerTest() {
-    InitFeatureList(
-        {browsing_data::features::kEnableBrowsingDataLifetimeManager});
+    std::vector<base::test::FeatureRef> features{
+        browsing_data::features::kEnableBrowsingDataLifetimeManager};
+    if (GetParam().feature_enabled) {
+      features.push_back(browsing_data::features::
+                             kDataRetentionPoliciesDisableSyncTypesNeeded);
+    }
+    InitFeatureList(std::move(features));
   }
 
   ~ChromeBrowsingDataLifetimeManagerTest() override = default;
 
   void SetUpOnMainThread() override {
     BrowsingDataRemoverBrowserTestBase::SetUpOnMainThread();
-    GetProfile()->GetPrefs()->Set(syncer::prefs::internal::kSyncManaged,
-                                  base::Value(true));
+    if (GetParam().data_deletion_condition ==
+        BrowsingDataDeletionCondition::SyncDisabled) {
+      GetProfile()->GetPrefs()->Set(syncer::prefs::internal::kSyncManaged,
+                                    base::Value(true));
+    } else if (GetParam().data_deletion_condition ==
+               BrowsingDataDeletionCondition::BrowserSigninDisabled) {
+#if BUILDFLAG(IS_ANDROID)
+      GetProfile()->GetPrefs()->Set(prefs::kSigninAllowed, base::Value(false));
+#else
+      GetProfile()->GetPrefs()->Set(prefs::kSigninAllowedOnNextStartup,
+                                    base::Value(false));
+#endif  // BUILDFLAG(IS_ANDROID)
+    }
   }
 
   void ApplyBrowsingDataLifetimeDeletion(base::StringPiece pref) {
@@ -127,8 +159,7 @@
 };
 
 class ChromeBrowsingDataLifetimeManagerScheduledRemovalTest
-    : public ChromeBrowsingDataLifetimeManagerTest,
-      public testing::WithParamInterface<BrowserType> {
+    : public ChromeBrowsingDataLifetimeManagerTest {
  protected:
   ChromeBrowsingDataLifetimeManagerScheduledRemovalTest() = default;
   ~ChromeBrowsingDataLifetimeManagerScheduledRemovalTest() override = default;
@@ -136,11 +167,10 @@
   void SetUpOnMainThread() override {
     ChromeBrowsingDataLifetimeManagerTest::SetUpOnMainThread();
 #if !BUILDFLAG(IS_ANDROID)
-    if (GetParam() == BrowserType::Incognito)
+    if (GetParam().browser_type == BrowserType::Incognito) {
       UseIncognitoBrowser();
+    }
 #endif
-    GetProfile()->GetPrefs()->Set(syncer::prefs::internal::kSyncManaged,
-                                  base::Value(true));
   }
 };
 
@@ -486,11 +516,7 @@
 }
 #endif
 
-INSTANTIATE_TEST_SUITE_P(All,
-                         ChromeBrowsingDataLifetimeManagerScheduledRemovalTest,
-                         ::testing::Values(BrowserType::Default,
-                                           BrowserType::Incognito));
-
+#if !BUILDFLAG(IS_ANDROID)
 class ChromeBrowsingDataLifetimeManagerShutdownTest
     : public ChromeBrowsingDataLifetimeManagerTest {
  protected:
@@ -518,7 +544,7 @@
   }
 };
 
-IN_PROC_BROWSER_TEST_F(ChromeBrowsingDataLifetimeManagerShutdownTest,
+IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerShutdownTest,
                        PRE_PRE_BrowserShutdown) {
   // browsing_history
   history_service()->AddPage(GURL("https://www.website.com"),
@@ -559,7 +585,7 @@
   base::RunLoop().RunUntilIdle();
 }
 
-IN_PROC_BROWSER_TEST_F(ChromeBrowsingDataLifetimeManagerShutdownTest,
+IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerShutdownTest,
                        PRE_BrowserShutdown) {
   // browsing_history
   VerifyHistorySize(1u);
@@ -595,7 +621,7 @@
   base::RunLoop().RunUntilIdle();
 }
 
-IN_PROC_BROWSER_TEST_F(ChromeBrowsingDataLifetimeManagerShutdownTest,
+IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerShutdownTest,
                        BrowserShutdown) {
   // browsing_history
   VerifyHistorySize(0u);
@@ -615,3 +641,49 @@
     EXPECT_EQ(CONTENT_SETTING_ALLOW, host_setting.GetContentSetting());
   }
 }
+
+INSTANTIATE_TEST_SUITE_P(
+    All,
+    ChromeBrowsingDataLifetimeManagerShutdownTest,
+    ::testing::ValuesIn(std::vector<FeatureConditions> {
+      {false, BrowsingDataDeletionCondition::SyncDisabled,
+       BrowserType::Incognito},
+          {false, BrowsingDataDeletionCondition::SyncDisabled,
+           BrowserType::Default},
+          {true, BrowsingDataDeletionCondition::SyncDisabled,
+           BrowserType::Incognito},
+          {true, BrowsingDataDeletionCondition::SyncDisabled,
+           BrowserType::Default},
+#if !BUILDFLAG(IS_CHROMEOS)
+          {true, BrowsingDataDeletionCondition::BrowserSigninDisabled,
+           BrowserType::Incognito},
+      {
+        true, BrowsingDataDeletionCondition::BrowserSigninDisabled,
+            BrowserType::Default
+      }
+#endif  // !BUILDFLAG(IS_CHROMEOS)
+    }));
+#endif  // !BUILDFLAG(IS_ANDROID)
+
+// Browser signin can only be tested on desktop after restart.
+INSTANTIATE_TEST_SUITE_P(
+    All,
+    ChromeBrowsingDataLifetimeManagerScheduledRemovalTest,
+    ::testing::ValuesIn(std::vector<FeatureConditions> {
+      {false, BrowsingDataDeletionCondition::SyncDisabled,
+       BrowserType::Incognito},
+          {false, BrowsingDataDeletionCondition::SyncDisabled,
+           BrowserType::Default},
+          {true, BrowsingDataDeletionCondition::SyncDisabled,
+           BrowserType::Incognito},
+          {true, BrowsingDataDeletionCondition::SyncDisabled,
+           BrowserType::Default},
+#if BUILDFLAG(IS_ANDROID)
+          {true, BrowsingDataDeletionCondition::BrowserSigninDisabled,
+           BrowserType::Incognito},
+      {
+        true, BrowsingDataDeletionCondition::BrowserSigninDisabled,
+            BrowserType::Default
+      }
+#endif  // BUILDFLAG(IS_ANDROID)
+    }));
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.cc
index 72d5e08..d12a043c 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.cc
@@ -9,10 +9,10 @@
 #include "chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/sync/sync_service_factory.h"
 #include "components/browsing_data/core/features.h"
 #include "content/public/browser/browser_context.h"
 #include "extensions/buildflags/buildflags.h"
-
 // static
 ChromeBrowsingDataLifetimeManagerFactory*
 ChromeBrowsingDataLifetimeManagerFactory::GetInstance() {
@@ -35,6 +35,7 @@
               .WithGuest(ProfileSelection::kOffTheRecordOnly)
               .Build()) {
   DependsOn(ChromeBrowsingDataRemoverDelegateFactory::GetInstance());
+  DependsOn(SyncServiceFactory::GetInstance());
 }
 
 ChromeBrowsingDataLifetimeManagerFactory::
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc
index 168c5d8a..4977e25 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc
@@ -11,11 +11,17 @@
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
+#include "chrome/browser/signin/signin_util.h"
+#include "chrome/browser/sync/sync_service_factory.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/browsing_data/core/features.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/prefs/testing_pref_service.h"
+#include "components/signin/public/base/signin_pref_names.h"
 #include "components/sync/base/pref_names.h"
+#include "components/sync/test/test_sync_service.h"
+#include "components/sync/test/test_sync_user_settings.h"
+#include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/browsing_data_remover_delegate.h"
 #include "content/public/test/browser_task_environment.h"
@@ -24,6 +30,13 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
+namespace {
+std::unique_ptr<KeyedService> CreateTestSyncService(
+    content::BrowserContext* context) {
+  return std::make_unique<syncer::TestSyncService>();
+}
+}  // namespace
+
 TEST(ChromeBrowsingDataLifetimeManager, ScheduledRemoval) {
   base::test::ScopedFeatureList feature_list;
   feature_list.InitAndEnableFeature(
@@ -59,41 +72,65 @@
       chrome_browsing_data_remover::DATA_TYPE_HISTORY |
       chrome_browsing_data_remover::DATA_TYPE_PASSWORDS |
       chrome_browsing_data_remover::DATA_TYPE_FORM_DATA;
+
+  base::Time current_time = base::Time::Now();
+  base::Time delete_start_time = base::Time::Min();
+
+  // delete data up until the `time_to_live_in_hours` for every type.
+  base::Time delete_end_time_1 = current_time - base::Hours(1);
+  base::Time delete_end_time_2 = current_time - base::Hours(2);
+  base::Time delete_end_time_3 = current_time - base::Hours(3);
+
   // Each scheduled removal is called once the prefs are set.
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(1),
-      remove_mask_1_filterable, 0);
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(1),
-      remove_mask_1_unfilterable, 0);
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(2), remove_mask_2,
-      origin_mask_2);
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(3),
-      remove_mask_3_filterable, 0);
+      delete_start_time, delete_end_time_3, remove_mask_3_filterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(3),
-      remove_mask_3_unfilterable, 0);
+      delete_start_time, delete_end_time_3, remove_mask_3_unfilterable, 0);
 
   testing_profile->GetPrefs()->Set(browsing_data::prefs::kBrowsingDataLifetime,
                                    *base::JSONReader::Read(kPref));
   browser_task_environment.RunUntilIdle();
   delegate.VerifyAndClearExpectations();
-  // Each scheduled removal is called once every hour.
+
+  // Data will be cleared after another 30 minutes.
+  delete_end_time_1 += base::Minutes(30);
+  delete_end_time_2 += base::Minutes(30);
+  delete_end_time_3 += base::Minutes(30);
+
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now(), remove_mask_1_filterable, 0);
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now(), remove_mask_1_unfilterable, 0);
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(1), remove_mask_2,
-      origin_mask_2);
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(2),
-      remove_mask_3_filterable, 0);
+      delete_start_time, delete_end_time_3, remove_mask_3_filterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(2),
-      remove_mask_3_unfilterable, 0);
+      delete_start_time, delete_end_time_3, remove_mask_3_unfilterable, 0);
+
+  // Data will be cleared after another 30 minutes.
+  delete_end_time_1 += base::Minutes(30);
+  delete_end_time_2 += base::Minutes(30);
+  delete_end_time_3 += base::Minutes(30);
+
+  // Each scheduled removal is called once every 30 minutes.
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_3, remove_mask_3_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_3, remove_mask_3_unfilterable, 0);
+
   browser_task_environment.FastForwardBy(base::Hours(1));
   delegate.VerifyAndClearExpectations();
 }
@@ -134,15 +171,272 @@
   testing_profile->GetPrefs()->Set(syncer::prefs::internal::kSyncManaged,
                                    base::Value(true));
 
-  // Each scheduled removal is called once every lowest time_to_live_in_hours,
-  // ere every 1 hour.
+  base::Time current_time = base::Time::Now();
+  base::Time delete_start_time = base::Time::Min();
+
+  // Delete until 30 minutes from current delete end time because a task is
+  // scheduled for 30 minutes from now.
+  // Doing `delete_start_time` - 1 hour + 30 minutes is written in an expanded
+  // form for better understanding.
+  base::Time delete_end_time_1 =
+      current_time - base::Hours(1) + base::Minutes(30);
+  base::Time delete_end_time_2 =
+      current_time - base::Hours(2) + base::Minutes(30);
+
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now(), remove_mask_1_filterable, 0);
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now(), remove_mask_1_unfilterable, 0);
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
   delegate.ExpectCallDontCareAboutFilterBuilder(
-      base::Time::Min(), base::Time::Now() - base::Hours(1), remove_mask_2,
-      origin_mask_2);
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
+  // Data will be cleared after another 30 minutes.
+  delete_end_time_1 += base::Minutes(30);
+  delete_end_time_2 += base::Minutes(30);
+
+  // Each scheduled removal is called once every 30 minutes.
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
   browser_task_environment.FastForwardBy(base::Hours(1));
   delegate.VerifyAndClearExpectations();
 }
+
+#if !BUILDFLAG(IS_CHROMEOS)
+TEST(ChromeBrowsingDataLifetimeManager,
+     ScheduledRemovalWithBrowserSigninDisabled_FeatureEnabled) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      browsing_data::features::kDataRetentionPoliciesDisableSyncTypesNeeded);
+
+  signin_util::ResetForceSigninForTesting();
+  content::BrowserTaskEnvironment browser_task_environment{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+  TestingProfile::Builder builder;
+  builder.SetIsNewProfile(true);
+  auto testing_profile = builder.Build();
+
+  content::MockBrowsingDataRemoverDelegate delegate;
+  auto* remover = testing_profile->GetBrowsingDataRemover();
+  remover->SetEmbedderDelegate(&delegate);
+  static constexpr char kPref[] =
+      R"([{"time_to_live_in_hours": 1, "data_types":["cached_images_and_files",
+      "site_settings"]}, {"time_to_live_in_hours": 2, "data_types":
+      ["cookies_and_other_site_data", "hosted_app_data"]}])";
+
+  uint64_t remove_mask_1_filterable =
+      content::BrowsingDataRemover::DATA_TYPE_CACHE;
+  uint64_t remove_mask_1_unfilterable =
+      chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS;
+  uint64_t remove_mask_2 = chrome_browsing_data_remover::DATA_TYPE_SITE_DATA;
+  uint64_t origin_mask_2 =
+      content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
+      content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
+
+  base::Time current_time = base::Time::Now();
+  base::Time delete_start_time = base::Time::Min();
+
+  // delete data up until the `time_to_live_in_hours` for every type.
+  base::Time delete_end_time_1 = current_time - base::Hours(1);
+  base::Time delete_end_time_2 = current_time - base::Hours(2);
+
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
+  // If browser sign in is disabled, the scheduled deletions should proceed as
+  // usual.
+  testing_profile->GetPrefs()->Set(prefs::kSigninAllowed, base::Value(false));
+
+  testing_profile->GetPrefs()->Set(browsing_data::prefs::kBrowsingDataLifetime,
+                                   *base::JSONReader::Read(kPref));
+
+  // Delete until 30 minutes from current delete end time because a task is
+  // scheduled for 30 minutes from now.
+  // Doing `delete_start_time` - 1 hour + 30 minutes is written in an expanded
+  // form for better understanding.
+  delete_end_time_1 += base::Minutes(30);
+  delete_end_time_2 += base::Minutes(30);
+
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
+  // Data will be cleared after another 30 minutes.
+  delete_end_time_1 += base::Minutes(30);
+  delete_end_time_2 += base::Minutes(30);
+
+  // Each scheduled removal is called once every 30 minutes.
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
+  browser_task_environment.FastForwardBy(base::Hours(1));
+  delegate.VerifyAndClearExpectations();
+}
+
+TEST(ChromeBrowsingDataLifetimeManager,
+     ScheduledRemovalWithBrowserSigninDisabled_FeatureDisabled) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndDisableFeature(
+      browsing_data::features::kDataRetentionPoliciesDisableSyncTypesNeeded);
+
+  signin_util::ResetForceSigninForTesting();
+  content::BrowserTaskEnvironment browser_task_environment{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+  TestingProfile::Builder builder;
+  builder.SetIsNewProfile(true);
+  auto testing_profile = builder.Build();
+
+  content::MockBrowsingDataRemoverDelegate delegate;
+  auto* remover = testing_profile->GetBrowsingDataRemover();
+  remover->SetEmbedderDelegate(&delegate);
+  static constexpr char kPref[] =
+      R"([{"time_to_live_in_hours": 1, "data_types":["cached_images_and_files",
+      "site_settings"]}, {"time_to_live_in_hours": 2, "data_types":
+      ["cookies_and_other_site_data", "hosted_app_data"]}])";
+
+  // Sync is enabled, so no deletion should be made.
+  testing_profile->GetPrefs()->Set(browsing_data::prefs::kBrowsingDataLifetime,
+                                   *base::JSONReader::Read(kPref));
+  browser_task_environment.RunUntilIdle();
+  delegate.VerifyAndClearExpectations();
+
+  // Disabling browser signin should have no effect if the feature is disabled.
+  testing_profile.get()->GetTestingPrefService()->SetManagedPref(
+      prefs::kSigninAllowed, base::Value(false));
+
+  browser_task_environment.RunUntilIdle();
+  delegate.VerifyAndClearExpectations();
+}
+#endif
+
+TEST(ChromeBrowsingDataLifetimeManager,
+     ScheduledRemovalWithBrowserSyncTypeDisabled_FeatureEnabled) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      browsing_data::features::kDataRetentionPoliciesDisableSyncTypesNeeded);
+
+  signin_util::ResetForceSigninForTesting();
+  content::BrowserTaskEnvironment browser_task_environment{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+  TestingProfile::Builder builder;
+  builder.SetIsNewProfile(true);
+  builder.AddTestingFactory(SyncServiceFactory::GetInstance(),
+                            SyncServiceFactory::GetDefaultFactory());
+
+  auto testing_profile = builder.Build();
+  syncer::TestSyncService* sync_service = static_cast<syncer::TestSyncService*>(
+      SyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+          testing_profile.get(), base::BindRepeating(&CreateTestSyncService)));
+
+  content::MockBrowsingDataRemoverDelegate delegate;
+  auto* remover = testing_profile->GetBrowsingDataRemover();
+  remover->SetEmbedderDelegate(&delegate);
+  static constexpr char kPref[] =
+      R"([{"time_to_live_in_hours": 1, "data_types":["cached_images_and_files",
+      "site_settings"]}, {"time_to_live_in_hours": 2, "data_types":
+      ["cookies_and_other_site_data", "hosted_app_data"]}])";
+
+  uint64_t remove_mask_1_filterable =
+      content::BrowsingDataRemover::DATA_TYPE_CACHE;
+  uint64_t remove_mask_1_unfilterable =
+      chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS;
+  uint64_t remove_mask_2 = chrome_browsing_data_remover::DATA_TYPE_SITE_DATA;
+  uint64_t origin_mask_2 =
+      content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
+      content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB;
+
+  // Sync is enabled, so no deletion should be made.
+  testing_profile->GetPrefs()->Set(browsing_data::prefs::kBrowsingDataLifetime,
+                                   *base::JSONReader::Read(kPref));
+  browser_task_environment.RunUntilIdle();
+  delegate.VerifyAndClearExpectations();
+
+  // If required sync types get disabled and the feature is enabled, the
+  // scheduled deletions should proceed as usual.
+  sync_service->GetUserSettings()->SetTypeIsManaged(
+      syncer::UserSelectableType::kPreferences, true);
+
+  base::Time current_time = base::Time::Now();
+  base::Time delete_start_time = base::Time::Min();
+  // Delete until 30 minutes from current delete end time because a task is
+  // scheduled for 30 minutes from now.
+  // Doing `delete_start_time` - 1 hour + 30 minutes is written in an expanded
+  // form for better understanding.
+  base::Time delete_end_time_1 =
+      current_time - base::Hours(1) + base::Minutes(30);
+  base::Time delete_end_time_2 =
+      current_time - base::Hours(2) + base::Minutes(30);
+
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
+  // Data will be cleared after another 30 minutes.
+  delete_end_time_1 += base::Minutes(30);
+  delete_end_time_2 += base::Minutes(30);
+
+  // Each scheduled removal is called once every 30 minutes.
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_filterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_1, remove_mask_1_unfilterable, 0);
+  delegate.ExpectCallDontCareAboutFilterBuilder(
+      delete_start_time, delete_end_time_2, remove_mask_2, origin_mask_2);
+
+  browser_task_environment.FastForwardBy(base::Hours(1));
+  delegate.VerifyAndClearExpectations();
+}
+
+TEST(ChromeBrowsingDataLifetimeManager,
+     ScheduledRemovalWithBrowserSyncTypeDisabled_FeatureDisabled) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndDisableFeature(
+      browsing_data::features::kDataRetentionPoliciesDisableSyncTypesNeeded);
+
+  signin_util::ResetForceSigninForTesting();
+  content::BrowserTaskEnvironment browser_task_environment{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+  TestingProfile::Builder builder;
+  builder.SetIsNewProfile(true);
+  auto testing_profile = builder.Build();
+
+  content::MockBrowsingDataRemoverDelegate delegate;
+  auto* remover = testing_profile->GetBrowsingDataRemover();
+  remover->SetEmbedderDelegate(&delegate);
+  static constexpr char kPref[] =
+      R"([{"time_to_live_in_hours": 1, "data_types":["cached_images_and_files",
+      "site_settings"]}, {"time_to_live_in_hours": 2, "data_types":
+      ["cookies_and_other_site_data", "hosted_app_data"]}])";
+
+  // Sync is enabled, so no deletion should be made.
+  testing_profile->GetPrefs()->Set(browsing_data::prefs::kBrowsingDataLifetime,
+                                   *base::JSONReader::Read(kPref));
+  browser_task_environment.RunUntilIdle();
+  delegate.VerifyAndClearExpectations();
+
+  // Disabling sync types should have no effect on the data if the feature is
+  // disabled.
+  testing_profile.get()->GetTestingPrefService()->SetManagedPref(
+      syncer::prefs::internal::kSyncPreferences, base::Value(false));
+
+  browser_task_environment.RunUntilIdle();
+  delegate.VerifyAndClearExpectations();
+}
diff --git a/chrome/browser/chrome_service_worker_browsertest.cc b/chrome/browser/chrome_service_worker_browsertest.cc
index 44ed24e..b3a0184 100644
--- a/chrome/browser/chrome_service_worker_browsertest.cc
+++ b/chrome/browser/chrome_service_worker_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/functional/bind.h"
+#include "base/json/json_reader.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
@@ -856,17 +857,23 @@
   }
 
   std::string ExecutePNACLUrlLoaderTest(const std::string& mode) {
-    std::string result(
-        EvalJs(
-            browser()->tab_strip_model()->GetActiveWebContents(),
-            base::StringPrintf("reportOnFetch = false;"
-                               "var iframe = document.createElement('iframe');"
-                               "iframe.src='%s#%s';"
-                               "document.body.appendChild(iframe);",
-                               test_page_url_.c_str(), mode.c_str()),
-            content::EXECUTE_SCRIPT_USE_MANUAL_REPLY)
-            .ExtractString());
-    EXPECT_EQ(base::StringPrintf("OnOpen%s", mode.c_str()), result);
+    content::DOMMessageQueue message_queue;
+    EXPECT_TRUE(content::ExecJs(
+        browser()->tab_strip_model()->GetActiveWebContents(),
+        base::StringPrintf("reportOnFetch = false;"
+                           "var iframe = document.createElement('iframe');"
+                           "iframe.src='%s#%s';"
+                           "document.body.appendChild(iframe);",
+                           test_page_url_.c_str(), mode.c_str())));
+
+    std::string json;
+    EXPECT_TRUE(message_queue.WaitForMessage(&json));
+
+    base::Value result =
+        base::JSONReader::Read(json, base::JSON_ALLOW_TRAILING_COMMAS).value();
+
+    EXPECT_TRUE(result.is_string());
+    EXPECT_EQ(base::StringPrintf("OnOpen%s", mode.c_str()), result.GetString());
     return EvalJs(browser()->tab_strip_model()->GetActiveWebContents(),
                   "reportRequests();")
         .ExtractString();
diff --git a/chrome/browser/chromeos/app_mode/app_session_unittest.cc b/chrome/browser/chromeos/app_mode/app_session_unittest.cc
index c36fe44..afd8f87 100644
--- a/chrome/browser/chromeos/app_mode/app_session_unittest.cc
+++ b/chrome/browser/chromeos/app_mode/app_session_unittest.cc
@@ -945,14 +945,23 @@
 
   void ShowTaskManager() override { task_manager_called_ = true; }
 
+  void OpenFeedbackPage(FeedbackSource source,
+                        const std::string& description_template) override {
+    open_feedback_page_called_ = true;
+  }
+
   bool is_new_window_called() const { return new_window_called_; }
   bool is_new_tab_called() const { return new_tab_called_; }
   bool is_task_manager_called() const { return task_manager_called_; }
+  bool is_open_feedback_page_called() const {
+    return open_feedback_page_called_;
+  }
 
  private:
   bool new_window_called_ = false;
   bool new_tab_called_ = false;
   bool task_manager_called_ = false;
+  bool open_feedback_page_called_ = false;
 };
 
 // Tests actions after pressing troubleshooting shortcuts. Runs all tests for
@@ -991,11 +1000,17 @@
     return fake_new_window_delegate_->is_task_manager_called();
   }
 
+  bool is_open_feedback_page_called() const {
+    return fake_new_window_delegate_->is_open_feedback_page_called();
+  }
+
  protected:
   ui::Accelerator new_window_accelerator =
       ui::Accelerator(ui::VKEY_N, ui::EF_CONTROL_DOWN);
   ui::Accelerator task_manager_accelerator =
       ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_COMMAND_DOWN);
+  ui::Accelerator open_feedback_page_accelerator =
+      ui::Accelerator(ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
 
  private:
   raw_ptr<FakeNewWindowDelegate> fake_new_window_delegate_;
@@ -1063,6 +1078,32 @@
   EXPECT_FALSE(is_task_manager_called());
 }
 
+TEST_P(AppSessionTroubleshootingShortcutsTest,
+       OpenFeedbackPageShortcutEnabled) {
+  SetUpKioskSession();
+  UpdateTroubleshootingToolsPolicy(/*enable=*/true);
+
+  ProcessInController(open_feedback_page_accelerator);
+  EXPECT_TRUE(is_open_feedback_page_called());
+}
+
+TEST_P(AppSessionTroubleshootingShortcutsTest,
+       OpenFeedbackPageShortcutNoActionByDefault) {
+  SetUpKioskSession();
+
+  ProcessInController(open_feedback_page_accelerator);
+  EXPECT_FALSE(is_open_feedback_page_called());
+}
+
+TEST_P(AppSessionTroubleshootingShortcutsTest,
+       OpenFeedbackPageShortcutNoActionIfPolicyDisabled) {
+  SetUpKioskSession();
+  UpdateTroubleshootingToolsPolicy(/*enable=*/false);
+
+  ProcessInController(open_feedback_page_accelerator);
+  EXPECT_FALSE(is_open_feedback_page_called());
+}
+
 INSTANTIATE_TEST_SUITE_P(AppSessionTroubleshootingShortcuts,
                          AppSessionTroubleshootingShortcutsTest,
                          ::testing::Bool());
diff --git a/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.cc b/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.cc
index 202547f..cb23c38 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.cc
@@ -50,6 +50,9 @@
     case TroubleshootingAcceleratorAction::SHOW_TASK_MANAGER:
       accelerators::ShowTaskManager();
       return true;
+    case TroubleshootingAcceleratorAction::OPEN_FEEDBACK_PAGE:
+      accelerators::OpenFeedbackPage();
+      return true;
   }
 
   return false;
@@ -80,6 +83,10 @@
       {ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_COMMAND_DOWN),
        TroubleshootingAcceleratorAction::SHOW_TASK_MANAGER});
 
+  // Shift+Alt+I
+  accelerators_with_actions_.insert(
+      {ui::Accelerator(ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN),
+       TroubleshootingAcceleratorAction::OPEN_FEEDBACK_PAGE});
   Shell::Get()->accelerator_controller()->Register(GetAllAccelerators(), this);
 }
 
diff --git a/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.h b/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.h
index f9b2acb..285fe3be 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.h
+++ b/chrome/browser/chromeos/app_mode/kiosk_troubleshooting_controller_ash.h
@@ -36,6 +36,7 @@
     SWITCH_WINDOWS_FORWARD,
     SWITCH_WINDOWS_BACKWARD,
     SHOW_TASK_MANAGER,
+    OPEN_FEEDBACK_PAGE,
   };
 
   // ui::AcceleratorTarget:
diff --git a/chrome/browser/companion/core/BUILD.gn b/chrome/browser/companion/core/BUILD.gn
index 0090dca..0a14098 100644
--- a/chrome/browser/companion/core/BUILD.gn
+++ b/chrome/browser/companion/core/BUILD.gn
@@ -13,7 +13,6 @@
     "constants.h",
     "features.cc",
     "features.h",
-    "msbb_delegate.h",
     "promo_handler.cc",
     "promo_handler.h",
     "signin_delegate.h",
diff --git a/chrome/browser/companion/core/companion_url_builder_unittest.cc b/chrome/browser/companion/core/companion_url_builder_unittest.cc
index 58e31e2..e24f178 100644
--- a/chrome/browser/companion/core/companion_url_builder_unittest.cc
+++ b/chrome/browser/companion/core/companion_url_builder_unittest.cc
@@ -32,6 +32,8 @@
   MOCK_METHOD0(AllowedSignin, bool());
   MOCK_METHOD0(IsSignedIn, bool());
   MOCK_METHOD0(StartSigninFlow, void());
+  MOCK_METHOD1(EnableMsbb, void(bool));
+  MOCK_METHOD1(LoadExpsPromUrl, void(const GURL&));
 };
 
 }  // namespace
diff --git a/chrome/browser/companion/core/mojom/companion.mojom b/chrome/browser/companion/core/mojom/companion.mojom
index de36e72..8507cb4 100644
--- a/chrome/browser/companion/core/mojom/companion.mojom
+++ b/chrome/browser/companion/core/mojom/companion.mojom
@@ -135,8 +135,12 @@
   // Notify the backend that the UI is ready to be shown.
   ShowUI();
 
-  // Called to notify the browser about user action on a promo.
-  OnPromoAction(PromoType promo_type, PromoAction promo_action);
+  // Called to notify the browser about user action of type `promo_action` on a
+  // promo of type `promo_type`.
+  // `exps_promo_url` is optionally used to pass the URL to be loaded for exps
+  // opt-in.
+  OnPromoAction(PromoType promo_type, PromoAction promo_action,
+                                      url.mojom.Url? exps_promo_url);
 
   // Called to notify the browser that user has clicked on region search button.
   OnRegionSearchClicked();
diff --git a/chrome/browser/companion/core/msbb_delegate.h b/chrome/browser/companion/core/msbb_delegate.h
deleted file mode 100644
index 8740b6db..0000000
--- a/chrome/browser/companion/core/msbb_delegate.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_COMPANION_CORE_MSBB_DELEGATE_H_
-#define CHROME_BROWSER_COMPANION_CORE_MSBB_DELEGATE_H_
-
-namespace companion {
-
-// Helper class to read and write the setting for make searches and browsing
-// better.
-class MsbbDelegate {
- public:
-  virtual ~MsbbDelegate() = default;
-
-  // Enable the setting for make searches and browsing better.
-  virtual void EnableMsbb(bool enable_msbb) = 0;
-};
-
-}  // namespace companion
-
-#endif  // CHROME_BROWSER_COMPANION_CORE_MSBB_DELEGATE_H_
diff --git a/chrome/browser/companion/core/promo_handler.cc b/chrome/browser/companion/core/promo_handler.cc
index de8362b..89edbb1 100644
--- a/chrome/browser/companion/core/promo_handler.cc
+++ b/chrome/browser/companion/core/promo_handler.cc
@@ -6,7 +6,6 @@
 
 #include "chrome/browser/companion/core/constants.h"
 #include "chrome/browser/companion/core/mojom/companion.mojom.h"
-#include "chrome/browser/companion/core/msbb_delegate.h"
 #include "chrome/browser/companion/core/signin_delegate.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
@@ -14,11 +13,8 @@
 namespace companion {
 
 PromoHandler::PromoHandler(PrefService* pref_service,
-                           SigninDelegate* signin_delegate,
-                           MsbbDelegate* msbb_delegate)
-    : pref_service_(pref_service),
-      signin_delegate_(signin_delegate),
-      msbb_delegate_(msbb_delegate) {}
+                           SigninDelegate* signin_delegate)
+    : pref_service_(pref_service), signin_delegate_(signin_delegate) {}
 
 PromoHandler::~PromoHandler() = default;
 
@@ -33,7 +29,8 @@
 }
 
 void PromoHandler::OnPromoAction(PromoType promo_type,
-                                 PromoAction promo_action) {
+                                 PromoAction promo_action,
+                                 const absl::optional<GURL>& exps_promo_url) {
   switch (promo_type) {
     case PromoType::kSignin:
       OnSigninPromo(promo_action);
@@ -42,7 +39,7 @@
       OnMsbbPromo(promo_action);
       return;
     case PromoType::kExps:
-      OnExpsPromo(promo_action);
+      OnExpsPromo(promo_action, exps_promo_url);
       return;
   }
 }
@@ -65,17 +62,20 @@
     IncrementPref(kMsbbPromoDeclinedCountPref);
   } else if (promo_action == PromoAction::kAccepted) {
     // Turn on MSBB.
-    msbb_delegate_->EnableMsbb(true);
+    signin_delegate_->EnableMsbb(true);
   }
 }
 
-void PromoHandler::OnExpsPromo(PromoAction promo_action) {
+void PromoHandler::OnExpsPromo(PromoAction promo_action,
+                               const absl::optional<GURL>& exps_promo_url) {
   if (promo_action == PromoAction::kShown) {
     IncrementPref(kExpsPromoShownCountPref);
   } else if (promo_action == PromoAction::kRejected) {
     IncrementPref(kExpsPromoDeclinedCountPref);
   } else if (promo_action == PromoAction::kAccepted) {
-    // TODO(b/272954072): Nothing to do. Just collect metrics.
+    if (exps_promo_url.has_value()) {
+      signin_delegate_->LoadExpsPromUrl(exps_promo_url.value());
+    }
   }
 }
 
diff --git a/chrome/browser/companion/core/promo_handler.h b/chrome/browser/companion/core/promo_handler.h
index a9b9dc68..b4195939 100644
--- a/chrome/browser/companion/core/promo_handler.h
+++ b/chrome/browser/companion/core/promo_handler.h
@@ -11,6 +11,7 @@
 #include "base/functional/callback.h"
 #include "base/memory/raw_ptr.h"
 #include "chrome/browser/companion/core/mojom/companion.mojom.h"
+#include "url/gurl.h"
 
 class PrefRegistrySimple;
 class PrefService;
@@ -19,16 +20,13 @@
 using side_panel::mojom::PromoAction;
 using side_panel::mojom::PromoType;
 
-class MsbbDelegate;
 class SigninDelegate;
 
 // Central class to handle user actions on various promos displayed in the
 // search companion.
 class PromoHandler {
  public:
-  PromoHandler(PrefService* pref_service,
-               SigninDelegate* signin_delegate,
-               MsbbDelegate* msbb_delegate);
+  PromoHandler(PrefService* pref_service, SigninDelegate* signin_delegate);
   ~PromoHandler();
 
   // Disallow copy/assign.
@@ -41,23 +39,23 @@
 
   // Called in response to the mojo call from renderer. Takes necessary action
   // to handle the user action on the promo.
-  void OnPromoAction(PromoType promo_type, PromoAction promo_action);
+  void OnPromoAction(PromoType promo_type,
+                     PromoAction promo_action,
+                     const absl::optional<GURL>& exps_promo_url);
 
  private:
   void OnSigninPromo(PromoAction promo_action);
   void OnMsbbPromo(PromoAction promo_action);
-  void OnExpsPromo(PromoAction promo_action);
+  void OnExpsPromo(PromoAction promo_action,
+                   const absl::optional<GURL>& exps_promo_url);
   void IncrementPref(const std::string& pref_name);
 
   // Lifetime of the PrefService is bound to profile which outlives the lifetime
   // of the companion page.
   raw_ptr<PrefService> pref_service_;
 
-  // Delegate to handle sign-in flow.
+  // Delegate to handle promo acceptance flow.
   raw_ptr<SigninDelegate> signin_delegate_;
-
-  // Delegate to set MSBB.
-  raw_ptr<MsbbDelegate> msbb_delegate_;
 };
 
 }  // namespace companion
diff --git a/chrome/browser/companion/core/promo_handler_unittest.cc b/chrome/browser/companion/core/promo_handler_unittest.cc
index a1e683e..d2c8439 100644
--- a/chrome/browser/companion/core/promo_handler_unittest.cc
+++ b/chrome/browser/companion/core/promo_handler_unittest.cc
@@ -6,27 +6,23 @@
 
 #include "chrome/browser/companion/core/constants.h"
 #include "chrome/browser/companion/core/mojom/companion.mojom.h"
-#include "chrome/browser/companion/core/msbb_delegate.h"
 #include "chrome/browser/companion/core/signin_delegate.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/testing_pref_service.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
 
 namespace companion {
 namespace {
 
-class MockMsbbDelegate : public MsbbDelegate {
- public:
-  MOCK_METHOD1(EnableMsbb, void(bool));
-  MOCK_METHOD0(IsMsbbEnabled, bool());
-};
-
 class MockSigninDelegate : public SigninDelegate {
  public:
   MOCK_METHOD0(AllowedSignin, bool());
   MOCK_METHOD0(IsSignedIn, bool());
   MOCK_METHOD0(StartSigninFlow, void());
+  MOCK_METHOD1(EnableMsbb, void(bool));
+  MOCK_METHOD1(LoadExpsPromUrl, void(const GURL&));
 };
 
 }  // namespace
@@ -38,42 +34,52 @@
 
   void SetUp() override {
     PromoHandler::RegisterProfilePrefs(pref_service_.registry());
-    promo_handler_ = std::make_unique<PromoHandler>(
-        &pref_service_, &signin_delegate_, &msbb_delegate_);
+    promo_handler_ =
+        std::make_unique<PromoHandler>(&pref_service_, &signin_delegate_);
   }
 
  protected:
   TestingPrefServiceSimple pref_service_;
   MockSigninDelegate signin_delegate_;
-  MockMsbbDelegate msbb_delegate_;
   std::unique_ptr<PromoHandler> promo_handler_;
 };
 
 TEST_F(PromoHandlerTest, MsbbPromo) {
-  promo_handler_->OnPromoAction(PromoType::kMsbb, PromoAction::kRejected);
+  promo_handler_->OnPromoAction(PromoType::kMsbb, PromoAction::kRejected,
+                                absl::nullopt);
   EXPECT_EQ(1, pref_service_.GetInteger(kMsbbPromoDeclinedCountPref));
 
-  EXPECT_CALL(msbb_delegate_, EnableMsbb(true)).Times(1);
-  promo_handler_->OnPromoAction(PromoType::kMsbb, PromoAction::kAccepted);
+  EXPECT_CALL(signin_delegate_, EnableMsbb(true)).Times(1);
+  promo_handler_->OnPromoAction(PromoType::kMsbb, PromoAction::kAccepted,
+                                absl::nullopt);
 }
 
 TEST_F(PromoHandlerTest, SigninPromo) {
-  promo_handler_->OnPromoAction(PromoType::kSignin, PromoAction::kRejected);
+  promo_handler_->OnPromoAction(PromoType::kSignin, PromoAction::kRejected,
+                                absl::nullopt);
   EXPECT_EQ(1, pref_service_.GetInteger(kSigninPromoDeclinedCountPref));
 
   EXPECT_CALL(signin_delegate_, StartSigninFlow()).Times(1);
-  promo_handler_->OnPromoAction(PromoType::kSignin, PromoAction::kAccepted);
+  promo_handler_->OnPromoAction(PromoType::kSignin, PromoAction::kAccepted,
+                                absl::nullopt);
 }
 
 TEST_F(PromoHandlerTest, ExpsPromo) {
-  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kShown);
+  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kShown,
+                                absl::nullopt);
   EXPECT_EQ(1, pref_service_.GetInteger(kExpsPromoShownCountPref));
 
-  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kRejected);
+  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kRejected,
+                                absl::nullopt);
   EXPECT_EQ(1, pref_service_.GetInteger(kExpsPromoDeclinedCountPref));
 
-  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kAccepted);
-  // TODO(b/272954072): Add test.
+  EXPECT_CALL(signin_delegate_, LoadExpsPromUrl(testing::_)).Times(0);
+  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kAccepted,
+                                absl::nullopt);
+
+  EXPECT_CALL(signin_delegate_, LoadExpsPromUrl(testing::_)).Times(1);
+  promo_handler_->OnPromoAction(PromoType::kExps, PromoAction::kAccepted,
+                                GURL());
 }
 
 }  // namespace companion
diff --git a/chrome/browser/companion/core/signin_delegate.h b/chrome/browser/companion/core/signin_delegate.h
index a87474e..4557dc18 100644
--- a/chrome/browser/companion/core/signin_delegate.h
+++ b/chrome/browser/companion/core/signin_delegate.h
@@ -5,10 +5,7 @@
 #ifndef CHROME_BROWSER_COMPANION_CORE_SIGNIN_DELEGATE_H_
 #define CHROME_BROWSER_COMPANION_CORE_SIGNIN_DELEGATE_H_
 
-#include "base/functional/callback.h"
-#include "base/memory/raw_ptr.h"
-
-class Profile;
+#include "url/gurl.h"
 
 namespace companion {
 
@@ -32,8 +29,11 @@
   // Starts a signin and sync flow.
   virtual void StartSigninFlow() = 0;
 
-  // Creates the instance.
-  static std::unique_ptr<SigninDelegate> Create(Profile* profile);
+  // Enable the setting for make searches and browsing better.
+  virtual void EnableMsbb(bool enable_msbb) = 0;
+
+  // Loads exps promo URL in the browser.
+  virtual void LoadExpsPromUrl(const GURL& exps_promo_url) = 0;
 };
 
 }  // namespace companion
diff --git a/chrome/browser/devtools/devtools_browsertest.cc b/chrome/browser/devtools/devtools_browsertest.cc
index 60186ac..3a3892c 100644
--- a/chrome/browser/devtools/devtools_browsertest.cc
+++ b/chrome/browser/devtools/devtools_browsertest.cc
@@ -188,14 +188,26 @@
     script << (i ? "," : "") << '\"' << args_array[i] << '\"';
   }
   script << "])";
-  EXPECT_EQ("[OK]", content::EvalJs(wc, script.str(),
-                                    content::EXECUTE_SCRIPT_USE_MANUAL_REPLY));
+
+  content::DOMMessageQueue message_queue;
+  EXPECT_TRUE(content::ExecJs(wc, script.str()));
+
+  std::string result;
+  EXPECT_TRUE(message_queue.WaitForMessage(&result));
+
+  EXPECT_EQ("\"[OK]\"", result);
 }
 
 void LoadLegacyFilesInFrontend(DevToolsWindow* window) {
   WebContents* wc = DevToolsWindowTesting::Get(window)->main_web_contents();
-  ASSERT_EQ("[OK]", content::EvalJs(wc, "uiTests.setupLegacyFilesForTest();",
-                                    content::EXECUTE_SCRIPT_USE_MANUAL_REPLY));
+  content::DOMMessageQueue message_queue;
+  EXPECT_TRUE(content::ExecJs(wc, "uiTests.setupLegacyFilesForTest();",
+                              content::EXECUTE_SCRIPT_NO_RESOLVE_PROMISES));
+
+  std::string result;
+  EXPECT_TRUE(message_queue.WaitForMessage(&result));
+
+  ASSERT_EQ("\"[OK]\"", result);
 }
 
 template <typename... T>
diff --git a/chrome/browser/dips/dips_bounce_detector.cc b/chrome/browser/dips/dips_bounce_detector.cc
index 6e20d40..81db125 100644
--- a/chrome/browser/dips/dips_bounce_detector.cc
+++ b/chrome/browser/dips/dips_bounce_detector.cc
@@ -32,6 +32,7 @@
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/navigation_handle_user_data.h"
 #include "content/public/browser/page.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "services/metrics/public/cpp/ukm_recorder.h"
 #include "third_party/blink/public/mojom/devtools/inspector_issue.mojom.h"
@@ -545,10 +546,8 @@
 void DIPSWebContentsObserver::OnCookiesAccessed(
     content::RenderFrameHost* render_frame_host,
     const content::CookieAccessDetails& details) {
-  // TODO(crbug.com/1434764): handle same-site iframes.
-  if (!render_frame_host->IsInPrimaryMainFrame() || details.blocked_by_policy ||
-      !net::SiteForCookies::FromUrl(details.first_party_url)
-           .IsFirstParty(details.url)) {
+  if (!IsInPrimaryPage(render_frame_host) || details.blocked_by_policy ||
+      !IsSameSiteForDIPS(details.first_party_url, details.url)) {
     return;
   }
 
@@ -578,9 +577,20 @@
 void DIPSWebContentsObserver::OnCookiesAccessed(
     NavigationHandle* navigation_handle,
     const content::CookieAccessDetails& details) {
-  if (!navigation_handle->IsInPrimaryMainFrame() || details.blocked_by_policy ||
-      !net::SiteForCookies::FromUrl(details.first_party_url)
-           .IsFirstParty(details.url)) {
+  // Discard all notifications that are:
+  // - From other page types like FencedFrames, and Prerendered.
+  // - Blocked by policies.
+  // - That are not same site (wrt GetSiteForDIPS()) with the first party URL.
+  // TODO(crbug.com/1445739): Treat partitioned 3P cookies as 1P cookies.
+  if (!IsInPrimaryPage(navigation_handle) || details.blocked_by_policy ||
+      !IsSameSiteForDIPS(details.first_party_url, details.url)) {
+    return;
+  }
+
+  // All access within the primary page iframes are attributed to the URL of the
+  // main frame (ie the first party URL).
+  if (IsInPrimaryPageIFrame(navigation_handle)) {
+    detector_.OnClientSiteDataAccessed(details.url, details.type);
     return;
   }
 
diff --git a/chrome/browser/dips/dips_bounce_detector_browsertest.cc b/chrome/browser/dips/dips_bounce_detector_browsertest.cc
index ce4a36a6..7e27f617 100644
--- a/chrome/browser/dips/dips_bounce_detector_browsertest.cc
+++ b/chrome/browser/dips/dips_bounce_detector_browsertest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/functional/bind.h"
 #include "chrome/browser/dips/dips_bounce_detector.h"
 
 #include <memory>
@@ -23,12 +24,16 @@
 #include "chrome/test/base/chrome_test_utils.h"
 #include "content/public/browser/cookie_access_details.h"
 #include "content/public/browser/navigation_handle.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/content_paths.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
+#include "content/public/test/fenced_frame_test_util.h"
 #include "content/public/test/hit_test_region_observer.h"
+#include "content/public/test/prerender_test_util.h"
 #include "content/public/test/test_devtools_protocol_client.h"
+#include "content/public/test/test_navigation_observer.h"
 #include "content/public/test/test_utils.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/http_request.h"
@@ -192,6 +197,10 @@
 
 void WCOCallbackLogger::DidFinishNavigation(
     NavigationHandle* navigation_handle) {
+  if (!IsInPrimaryPage(navigation_handle)) {
+    return;
+  }
+
   // Android testing produces callbacks for a finished navigation to "blank" at
   // the beginning of a test. These should be ignored here.
   if (FormatURL(navigation_handle->GetURL()) == "blank" ||
@@ -259,7 +268,10 @@
 
 class DIPSBounceDetectorBrowserTest : public PlatformBrowserTest {
  protected:
-  DIPSBounceDetectorBrowserTest() {
+  DIPSBounceDetectorBrowserTest()
+      : prerender_test_helper_(base::BindRepeating(
+            &DIPSBounceDetectorBrowserTest::GetActiveWebContents,
+            base::Unretained(this))) {
     scoped_feature_list_.InitWithFeatures(
         /*enabled_features=*/{},
         /*disabled_features=*/{
@@ -275,6 +287,7 @@
   }
 
   void SetUpOnMainThread() override {
+    prerender_test_helper_.SetUp(embedded_test_server());
     ASSERT_TRUE(embedded_test_server()->Start());
     host_resolver()->AddRule("a.test", "127.0.0.1");
     host_resolver()->AddRule("b.test", "127.0.0.1");
@@ -382,9 +395,52 @@
         /*world_id=*/1);
   }
 
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
+  auto* fenced_frame_test_helper() { return &fenced_frame_test_helper_; }
+  auto* prerender_test_helper() { return &prerender_test_helper_; }
 
+  content::RenderFrameHost* GetIFrame() {
+    content::WebContents* web_contents = GetActiveWebContents();
+    return ChildFrameAt(web_contents->GetPrimaryMainFrame(), 0);
+  }
+
+  content::RenderFrameHost* GetNestedIFrame() {
+    return ChildFrameAt(GetIFrame(), 0);
+  }
+
+  void CloseTab() {
+    content::WebContentsDestroyedWatcher destruction_watcher(
+        GetActiveWebContents());
+    GetActiveWebContents()->Close();
+    destruction_watcher.Wait();
+  }
+
+  void NavigateNestedIFrameTo(content::RenderFrameHost* parent_frame,
+                              const std::string& iframe_id,
+                              const GURL& url) {
+    content::TestNavigationObserver load_observer(GetActiveWebContents());
+    std::string script = base::StringPrintf(
+        "var iframe = document.getElementById('%s');iframe.src='%s';",
+        iframe_id.c_str(), url.spec().c_str());
+    ASSERT_TRUE(content::ExecJs(parent_frame, script,
+                                content::EXECUTE_SCRIPT_NO_USER_GESTURE));
+    load_observer.Wait();
+  }
+
+  void AccessCookieViaJSIn(content::RenderFrameHost* frame) {
+    FrameCookieAccessObserver observer(GetActiveWebContents(), frame,
+                                       CookieOperation::kChange);
+    ASSERT_TRUE(content::ExecJs(frame, "document.cookie = 'foo=bar';",
+                                content::EXECUTE_SCRIPT_NO_USER_GESTURE));
+    observer.Wait();
+  }
+
+  const base::FilePath kChromeTestDataDir =
+      base::FilePath(FILE_PATH_LITERAL("chrome/test/data"));
+
+ private:
+  content::test::PrerenderTestHelper prerender_test_helper_;
+  content::test::FencedFrameTestHelper fenced_frame_test_helper_;
+  base::test::ScopedFeatureList scoped_feature_list_;
   raw_ptr<DIPSWebContentsObserver, DanglingUntriaged> web_contents_observer_ =
       nullptr;
 };
@@ -407,8 +463,7 @@
     base::PathService::Get(content::DIR_TEST_DATA, &path);
     https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
     https_server_.ServeFilesFromDirectory(path);
-    https_server_.AddDefaultHandlers(
-        base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
+    https_server_.AddDefaultHandlers(kChromeTestDataDir);
     ASSERT_TRUE(https_server_.Start());
   }
 
@@ -452,6 +507,282 @@
                                            StorageType::INDEXED_DB));
 
 IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       AttributeSameSiteIframesCookieClientAccessTo1P) {
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/iframe_blank.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL iframe_url =
+      embedded_test_server()->GetURL("a.test", "/title1.html");
+  ASSERT_TRUE(
+      content::NavigateIframeToURL(GetActiveWebContents(), "test", iframe_url));
+
+  AccessCookieViaJSIn(GetIFrame());
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(redirects, ElementsAre(("[1/1] blank -> a.test/iframe_blank.html "
+                                      "(Write) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       AttributeSameSiteIframesCookieServerAccessTo1P) {
+  net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
+  https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
+  https_server.AddDefaultHandlers(kChromeTestDataDir);
+  ASSERT_TRUE(https_server.Start());
+
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/iframe_blank.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL iframe_url =
+      https_server.GetURL("a.test", "/set-cookie?foo=bar;SameSite=None;Secure");
+  ASSERT_TRUE(
+      content::NavigateIframeToURL(GetActiveWebContents(), "test", iframe_url));
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(redirects, ElementsAre(("[1/1] blank -> a.test/iframe_blank.html "
+                                      "(Write) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       AttributeSameSiteNestedIframesCookieClientAccessTo1P) {
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/iframe_blank.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL iframe_url =
+      embedded_test_server()->GetURL("a.test", "/iframe_blank.html");
+  ASSERT_TRUE(
+      content::NavigateIframeToURL(GetActiveWebContents(), "test", iframe_url));
+
+  const GURL nested_iframe_url =
+      embedded_test_server()->GetURL("a.test", "/title1.html");
+  NavigateNestedIFrameTo(GetIFrame(), "test", nested_iframe_url);
+
+  AccessCookieViaJSIn(GetNestedIFrame());
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(redirects, ElementsAre(("[1/1] blank -> a.test/iframe_blank.html "
+                                      "(Write) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       AttributeSameSiteNestedIframesCookieServerAccessTo1P) {
+  net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
+  https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
+  https_server.AddDefaultHandlers(kChromeTestDataDir);
+  ASSERT_TRUE(https_server.Start());
+
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/iframe_blank.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL iframe_url =
+      embedded_test_server()->GetURL("a.test", "/iframe_blank.html");
+  ASSERT_TRUE(
+      content::NavigateIframeToURL(GetActiveWebContents(), "test", iframe_url));
+
+  const GURL nested_iframe_url =
+      https_server.GetURL("a.test", "/set-cookie?foo=bar;SameSite=None;Secure");
+  NavigateNestedIFrameTo(GetIFrame(), "test", nested_iframe_url);
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(redirects, ElementsAre(("[1/1] blank -> a.test/iframe_blank.html "
+                                      "(Write) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       DiscardFencedFrameCookieClientAccess) {
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/title1.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL fenced_frame_url =
+      embedded_test_server()->GetURL("a.test", "/fenced_frames/title2.html");
+  content::RenderFrameHostWrapper fenced_frame(
+      fenced_frame_test_helper()->CreateFencedFrame(
+          GetActiveWebContents()->GetPrimaryMainFrame(), fenced_frame_url));
+  EXPECT_FALSE(fenced_frame.IsDestroyed());
+
+  AccessCookieViaJSIn(fenced_frame.get());
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(
+      redirects,
+      ElementsAre(
+          ("[1/1] blank -> a.test/title1.html (None) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       DiscardFencedFrameCookieServerAccess) {
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/title1.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL fenced_frame_url = embedded_test_server()->GetURL(
+      "a.test", "/fenced_frames/set_cookie_header.html");
+  URLCookieAccessObserver observer(GetActiveWebContents(), fenced_frame_url,
+                                   CookieOperation::kChange);
+  content::RenderFrameHostWrapper fenced_frame(
+      fenced_frame_test_helper()->CreateFencedFrame(
+          GetActiveWebContents()->GetPrimaryMainFrame(), fenced_frame_url));
+  EXPECT_FALSE(fenced_frame.IsDestroyed());
+  observer.Wait();
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(
+      redirects,
+      ElementsAre(
+          ("[1/1] blank -> a.test/title1.html (None) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       DiscardPrerenderedPageCookieClientAccess) {
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/title1.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL prerendering_url =
+      embedded_test_server()->GetURL("a.test", "/title2.html");
+  const int host_id = prerender_test_helper()->AddPrerender(prerendering_url);
+  prerender_test_helper()->WaitForPrerenderLoadCompletion(prerendering_url);
+  content::test::PrerenderHostObserver observer(*GetActiveWebContents(),
+                                                host_id);
+  EXPECT_FALSE(observer.was_activated());
+  content::RenderFrameHost* prerender_frame =
+      prerender_test_helper()->GetPrerenderedMainFrameHost(host_id);
+  EXPECT_NE(prerender_frame, nullptr);
+
+  AccessCookieViaJSIn(prerender_frame);
+
+  prerender_test_helper()->CancelPrerenderedPage(host_id);
+  observer.WaitForDestroyed();
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  CloseTab();
+  EXPECT_THAT(
+      redirects,
+      ElementsAre(
+          ("[1/1] blank -> a.test/title1.html (None) -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
+                       DiscardPrerenderedPageCookieServerAccess) {
+  std::vector<std::string> redirects;
+  StartAppendingRedirectsTo(&redirects);
+
+  const GURL primary_main_frame_url =
+      embedded_test_server()->GetURL("a.test", "/title1.html");
+  ASSERT_TRUE(
+      content::NavigateToURL(GetActiveWebContents(), primary_main_frame_url));
+
+  const GURL prerendering_url =
+      embedded_test_server()->GetURL("a.test", "/set_cookie_header.html");
+  URLCookieAccessObserver observer(GetActiveWebContents(), prerendering_url,
+                                   CookieOperation::kChange);
+  const int host_id = prerender_test_helper()->AddPrerender(prerendering_url);
+  prerender_test_helper()->WaitForPrerenderLoadCompletion(prerendering_url);
+  observer.Wait();
+
+  content::test::PrerenderHostObserver prerender_observer(
+      *GetActiveWebContents(), host_id);
+  EXPECT_FALSE(prerender_observer.was_activated());
+  prerender_test_helper()->CancelPrerenderedPage(host_id);
+  prerender_observer.WaitForDestroyed();
+
+  const GURL primary_main_frame_final_url =
+      embedded_test_server()->GetURL("d.test", "/title1.html");
+  // Performs a Client-redirect to `primary_main_frame_final_url`.
+  ASSERT_TRUE(content::NavigateToURLFromRendererWithoutUserGesture(
+      GetActiveWebContents(), primary_main_frame_final_url));
+
+  // From the time the cookie was set by the prerendering page and now, the
+  // primary main page might have accessed (read) the cookie (when sending a
+  // request for a favicon after prerendering page already accessed (Write) the
+  // cookie). To prevent flakiness we check for any such access and test for the
+  // expected outcome accordingly.
+  // TODO(crbug.com/1447929): Investigate whether Prerendering pages (same-site)
+  // can be use for evasion.
+  const std::string expected_access_type =
+      observer.CookieAccessedInPrimaryPage() ? "Read" : "None";
+
+  CloseTab();
+  EXPECT_THAT(redirects,
+              ElementsAre(("[1/1] blank -> a.test/title1.html (" +
+                           expected_access_type + ") -> d.test/title1.html")));
+}
+
+IN_PROC_BROWSER_TEST_F(DIPSBounceDetectorBrowserTest,
                        DetectStatefulBounce_ClientRedirect_SiteDataAccess) {
   std::vector<std::string> redirects;
   StartAppendingRedirectsTo(&redirects);
@@ -599,8 +930,7 @@
   // cookie, the cookie needs to be SameSite=None and Secure.
   net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
   https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
-  https_server.AddDefaultHandlers(
-      base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
+  https_server.AddDefaultHandlers(kChromeTestDataDir);
   https_server.RegisterDefaultHandler(base::BindRepeating(
       &HandleCrossSiteSameSiteNoneCookieRedirect, &https_server));
   ASSERT_TRUE(https_server.Start());
@@ -706,8 +1036,7 @@
   // cookie, it needs to be SameSite=None and Secure.
   net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
   https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES);
-  https_server.AddDefaultHandlers(
-      base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
+  https_server.AddDefaultHandlers(kChromeTestDataDir);
   https_server.RegisterDefaultHandler(base::BindRepeating(
       &HandleCrossSiteSameSiteNoneCookieRedirect, &https_server));
   ASSERT_TRUE(https_server.Start());
diff --git a/chrome/browser/dips/dips_test_utils.cc b/chrome/browser/dips/dips_test_utils.cc
index 304aa5d..38e25b1 100644
--- a/chrome/browser/dips/dips_test_utils.cc
+++ b/chrome/browser/dips/dips_test_utils.cc
@@ -27,6 +27,8 @@
 void URLCookieAccessObserver::OnCookiesAccessed(
     RenderFrameHost* render_frame_host,
     const CookieAccessDetails& details) {
+  cookie_accessed_in_primary_page_ = IsInPrimaryPage(render_frame_host);
+
   if (details.type == access_type_ && details.url == url_) {
     run_loop_.Quit();
   }
@@ -35,11 +37,17 @@
 void URLCookieAccessObserver::OnCookiesAccessed(
     NavigationHandle* navigation_handle,
     const CookieAccessDetails& details) {
+  cookie_accessed_in_primary_page_ = IsInPrimaryPage(navigation_handle);
+
   if (details.type == access_type_ && details.url == url_) {
     run_loop_.Quit();
   }
 }
 
+bool URLCookieAccessObserver::CookieAccessedInPrimaryPage() const {
+  return cookie_accessed_in_primary_page_;
+}
+
 FrameCookieAccessObserver::FrameCookieAccessObserver(
     WebContents* web_contents,
     RenderFrameHost* render_frame_host,
diff --git a/chrome/browser/dips/dips_test_utils.h b/chrome/browser/dips/dips_test_utils.h
index 268a54f..f3b9619 100644
--- a/chrome/browser/dips/dips_test_utils.h
+++ b/chrome/browser/dips/dips_test_utils.h
@@ -97,6 +97,8 @@
 
   void Wait();
 
+  bool CookieAccessedInPrimaryPage() const;
+
  private:
   // WebContentsObserver overrides
   void OnCookiesAccessed(content::RenderFrameHost* render_frame_host,
@@ -106,6 +108,7 @@
 
   GURL url_;
   CookieOperation access_type_;
+  bool cookie_accessed_in_primary_page_ = false;
   base::RunLoop run_loop_;
 };
 
diff --git a/chrome/browser/dips/dips_utils.h b/chrome/browser/dips/dips_utils.h
index 52b941f..4eff726 100644
--- a/chrome/browser/dips/dips_utils.h
+++ b/chrome/browser/dips/dips_utils.h
@@ -11,6 +11,7 @@
 #include "base/strings/string_piece_forward.h"
 #include "base/time/time.h"
 #include "components/content_settings/browser/page_specific_content_settings.h"
+#include "content/public/browser/navigation_handle.h"
 #include "services/network/public/mojom/cookie_access_observer.mojom.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "url/gurl.h"
@@ -163,6 +164,35 @@
 // and may change.
 std::string GetSiteForDIPS(const GURL& url);
 
+// Returns `True` iff the `navigation_handle` represents a navigation happening
+// in an iframe of the primary frame tree.
+inline bool IsInPrimaryPageIFrame(
+    content::NavigationHandle* navigation_handle) {
+  return navigation_handle->GetParentFrame()
+             ? navigation_handle->GetParentFrame()->GetPage().IsPrimary()
+             : false;
+}
+
+// Returns `True` iff both urls return a similar outcome off of
+// `GetSiteForDIPS()`.
+inline bool IsSameSiteForDIPS(const GURL& url1, const GURL& url2) {
+  return GetSiteForDIPS(url1) == GetSiteForDIPS(url2);
+}
+
+// Returns `True` iff the `navigation_handle` represents a navigation happening
+// in any frame of the primary page.
+// NOTE: This does not include fenced frames.
+inline bool IsInPrimaryPage(content::NavigationHandle* navigation_handle) {
+  return navigation_handle->GetParentFrame()
+             ? navigation_handle->GetParentFrame()->GetPage().IsPrimary()
+             : navigation_handle->IsInPrimaryMainFrame();
+}
+
+// Returns `True` iff the 'rfh' represents a frame in the primary page.
+inline bool IsInPrimaryPage(content::RenderFrameHost* rfh) {
+  return rfh->GetPage().IsPrimary();
+}
+
 enum class DIPSRecordedEvent {
   kStorage,
   kInteraction,
diff --git a/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.cc b/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.cc
index 008ba3c..ad1813a 100644
--- a/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.cc
+++ b/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.cc
@@ -54,7 +54,7 @@
 
 void PrintIfAllowedByPolicy(scoped_refptr<base::RefCountedMemory> data,
                             content::WebContents* initiator,
-                            const std::string& printer_name,
+                            std::string printer_name,
                             base::OnceCallback<void(bool)> on_verdict,
                             base::OnceClosure hide_preview) {
   ContentAnalysisDelegate::Data scanning_data;
@@ -67,7 +67,7 @@
           printing::features::kEnablePrintScanAfterPreview) &&
       scanning_data.settings.cloud_or_local_settings.is_local_analysis()) {
     // Populate print metadata.
-    scanning_data.printer_name = printer_name;
+    scanning_data.printer_name = std::move(printer_name);
 
     // Hide the preview dialog so it doesn't cover the content analysis dialog
     // showing the status of the scanning.
diff --git a/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.h b/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.h
index 987287d4..6644431 100644
--- a/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.h
+++ b/chrome/browser/enterprise/connectors/analysis/print_content_analysis_utils.h
@@ -26,7 +26,7 @@
 // asynchronously.
 void PrintIfAllowedByPolicy(scoped_refptr<base::RefCountedMemory> data,
                             content::WebContents* initiator,
-                            const std::string& printer_name,
+                            std::string printer_name,
                             base::OnceCallback<void(bool)> on_verdict,
                             base::OnceClosure hide_preview);
 
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc
index 100470a..9ddb3b9 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc
@@ -47,10 +47,10 @@
 std::unique_ptr<WebRequestActionSet> CreateSetOfActions(const char* json) {
   base::Value::List parsed_value = base::test::ParseJsonList(json);
 
-  WebRequestActionSet::Values actions;
-  for (const base::Value& entry : parsed_value) {
+  base::Value::List actions;
+  for (base::Value& entry : parsed_value) {
     CHECK(entry.is_dict());
-    actions.push_back(entry.Clone());
+    actions.Append(std::move(entry));
   }
 
   std::string error;
@@ -200,7 +200,7 @@
   bool bad_message = false;
   std::unique_ptr<WebRequestActionSet> result;
 
-  WebRequestActionSet::Values input;
+  base::Value::List input;
 
   // Test empty input.
   error.clear();
@@ -220,7 +220,7 @@
   base::Value::List wrong_format_action;
 
   // Test success.
-  input.emplace_back(std::move(correct_action));
+  input.Append(std::move(correct_action));
   error.clear();
   result = WebRequestActionSet::Create(nullptr, nullptr, input, &error,
                                        &bad_message);
@@ -233,7 +233,7 @@
   EXPECT_EQ(10, result->GetMinimumPriority());
 
   // Test failure.
-  input.emplace_back(std::move(incorrect_action));
+  input.Append(std::move(incorrect_action));
   error.clear();
   result = WebRequestActionSet::Create(nullptr, nullptr, input, &error,
                                        &bad_message);
@@ -241,7 +241,7 @@
   EXPECT_FALSE(result.get());
 
   // Test wrong data type passed.
-  input.emplace_back(std::move(wrong_format_action));
+  input.Append(std::move(wrong_format_action));
   error.clear();
   result = WebRequestActionSet::Create(nullptr, nullptr, input, &error,
                                        &bad_message);
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
index 8d8677e25..3cd2659 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
@@ -134,12 +134,12 @@
     api::events::Rule rule;
     rule.id = kRuleId1;
     rule.priority = 100;
-    rule.actions.emplace_back(action_dict.Clone());
+    rule.actions.Append(std::move(action_dict));
     http_condition_dict.Set(keys2::kSchemesKey, std::move(scheme_http));
     http_condition_url_filter.Set(keys::kUrlKey,
                                   std::move(http_condition_dict));
-    rule.conditions.emplace_back(http_condition_url_filter.Clone());
-    rule.conditions.emplace_back(https_condition_url_filter.Clone());
+    rule.conditions.Append(std::move(http_condition_url_filter));
+    rule.conditions.Append(std::move(https_condition_url_filter));
     return rule;
   }
 
@@ -154,8 +154,8 @@
     api::events::Rule rule;
     rule.id = kRuleId2;
     rule.priority = 100;
-    rule.actions.emplace_back(action_dict.Clone());
-    rule.conditions.emplace_back(condition_dict.Clone());
+    rule.actions.Append(std::move(action_dict));
+    rule.conditions.Append(std::move(condition_dict));
     return rule;
   }
 
@@ -170,8 +170,8 @@
     api::events::Rule rule;
     rule.id = kRuleId3;
     rule.priority = 100;
-    rule.actions.emplace_back(action_dict.Clone());
-    rule.conditions.emplace_back(condition_dict.Clone());
+    rule.actions.Append(std::move(action_dict));
+    rule.conditions.Append(std::move(condition_dict));
     return rule;
   }
 
@@ -191,8 +191,8 @@
     api::events::Rule rule;
     rule.id = kRuleId4;
     rule.priority = 200;
-    rule.actions.emplace_back(action_dict.Clone());
-    rule.conditions.emplace_back(condition_dict.Clone());
+    rule.actions.Append(std::move(action_dict));
+    rule.conditions.Append(std::move(condition_dict));
     return rule;
   }
 
@@ -220,9 +220,9 @@
     api::events::Rule rule;
     rule.id = rule_id;
     rule.priority = 1;
-    rule.actions.emplace_back(action_dict.Clone());
+    rule.actions.Append(std::move(action_dict));
     for (auto* attribute : attributes)
-      rule.conditions.push_back(CreateCondition(*attribute));
+      rule.conditions.Append(CreateCondition(*attribute));
     return rule;
   }
 
@@ -728,8 +728,8 @@
       "}                                                             ";
   base::Value action_value = base::test::ParseJson(kAction);
 
-  WebRequestActionSet::Values actions;
-  actions.push_back(std::move(action_value));
+  base::Value::List actions;
+  actions.Append(std::move(action_value));
 
   std::string error;
   bool bad_message = false;
diff --git a/chrome/browser/extensions/api/settings_private/generated_pref.cc b/chrome/browser/extensions/api/settings_private/generated_pref.cc
index 5276623d..ab80d8c1 100644
--- a/chrome/browser/extensions/api/settings_private/generated_pref.cc
+++ b/chrome/browser/extensions/api/settings_private/generated_pref.cc
@@ -85,7 +85,7 @@
   if (!pref_object->user_selectable_values) {
     pref_object->user_selectable_values.emplace();
   }
-  pref_object->user_selectable_values->push_back(base::Value(value));
+  pref_object->user_selectable_values->Append(value);
 }
 
 }  // namespace settings_private
diff --git a/chrome/browser/extensions/extension_csp_bypass_browsertest.cc b/chrome/browser/extensions/extension_csp_bypass_browsertest.cc
index 7b156d86..3c6b443e 100644
--- a/chrome/browser/extensions/extension_csp_bypass_browsertest.cc
+++ b/chrome/browser/extensions/extension_csp_bypass_browsertest.cc
@@ -171,10 +171,13 @@
   // Second, verify that adding an iframe to the page from the extension will
   // succeed. Click a button whose event handler runs in the extension's world
   // which bypasses CSP, and adds the iframe.
-  EXPECT_EQ(true, content::EvalJs(
-                      web_contents(),
-                      "document.querySelector('#addIframeButton').click();",
-                      content::EXECUTE_SCRIPT_USE_MANUAL_REPLY));
+  content::DOMMessageQueue message_queue;
+  EXPECT_TRUE(
+      content::ExecJs(browser()->tab_strip_model()->GetActiveWebContents(),
+                      "document.querySelector('#addIframeButton').click();"));
+  std::string ack;
+  EXPECT_TRUE(message_queue.WaitForMessage(&ack));
+  EXPECT_EQ("true", ack);
   frame = GetFrameByName("added-by-extension");
   ASSERT_TRUE(frame);
   EXPECT_TRUE(WasFrameWithScriptLoaded(frame));
diff --git a/chrome/browser/extensions/extension_unload_browsertest.cc b/chrome/browser/extensions/extension_unload_browsertest.cc
index 753eb0b..6e9a5a70 100644
--- a/chrome/browser/extensions/extension_unload_browsertest.cc
+++ b/chrome/browser/extensions/extension_unload_browsertest.cc
@@ -120,10 +120,12 @@
   // extension's) Origin header - this should succeed (given that
   // xhr.txt.mock-http-headers says `Access-Control-Allow-Origin: *`).
   const char kSendXhrScript[] = "document.getElementById('xhrButton').click();";
-  EXPECT_EQ(true,
-            content::EvalJs(
-                browser()->tab_strip_model()->GetActiveWebContents(),
-                kSendXhrScript, content::EXECUTE_SCRIPT_USE_MANUAL_REPLY));
+  content::DOMMessageQueue message_queue;
+  EXPECT_TRUE(content::ExecJs(
+      browser()->tab_strip_model()->GetActiveWebContents(), kSendXhrScript));
+  std::string ack;
+  EXPECT_TRUE(message_queue.WaitForMessage(&ack));
+  EXPECT_EQ("true", ack);
 
   DisableExtension(id);
 
@@ -136,10 +138,10 @@
   // The content script sends an XHR with the webpage's (rather than
   // extension's) Origin header - this should succeed (given that
   // xhr.txt.mock-http-headers says `Access-Control-Allow-Origin: *`).
-  EXPECT_EQ(true,
-            content::EvalJs(
-                browser()->tab_strip_model()->GetActiveWebContents(),
-                kSendXhrScript, content::EXECUTE_SCRIPT_USE_MANUAL_REPLY));
+  EXPECT_TRUE(content::ExecJs(
+      browser()->tab_strip_model()->GetActiveWebContents(), kSendXhrScript));
+  EXPECT_TRUE(message_queue.WaitForMessage(&ack));
+  EXPECT_EQ("true", ack);
 
   // Ensure the process has not been killed.
   EXPECT_TRUE(browser()
diff --git a/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_feed_header.xml b/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_feed_header.xml
index 9c7aa0f..483e954 100644
--- a/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_feed_header.xml
+++ b/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_feed_header.xml
@@ -45,8 +45,8 @@
           android:layout_width="wrap_content"
           android:layout_height="@dimen/feed_header_tab_layout_height"
           android:layout_gravity="center"
-          android:layout_marginTop="8dp"
-          android:layout_marginBottom="8dp"
+          android:layout_marginTop="@dimen/feed_header_tab_list_view_top_bottom_margin"
+          android:layout_marginBottom="@dimen/feed_header_tab_list_view_top_bottom_margin"
           style="@style/NtpHeaderTabLayoutStyle" />
 
       <TextView
diff --git a/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_sticky_feed_header.xml b/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_sticky_feed_header.xml
index 63ea7fc8..ef116d1 100644
--- a/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_sticky_feed_header.xml
+++ b/chrome/browser/feed/android/java/res/layout/new_tab_page_multi_sticky_feed_header.xml
@@ -46,8 +46,8 @@
         android:layout_height="@dimen/feed_header_tab_layout_height"
         android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
-        android:layout_marginTop="8dp"
-        android:layout_marginBottom="8dp"
+        android:layout_marginTop="@dimen/feed_header_tab_list_view_top_bottom_margin"
+        android:layout_marginBottom="@dimen/feed_header_tab_list_view_top_bottom_margin"
         style="@style/NtpHeaderTabLayoutStyle" />
 
     <TextView
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 4fdae2c..50005edb 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -2953,6 +2953,11 @@
     "expiry_milestone": 120
   },
   {
+    "name": "enable-openxr-android",
+    "owners": [ "alcooper", "bajones", "bialpio", "xr-dev@chromium.org" ],
+    "expiry_milestone": 127
+  },
+  {
     "name": "enable-os-feedback",
     "owners": [ "xiangdongkong", "cros-feedback-app@google.com" ],
     "expiry_milestone": 116
@@ -4360,6 +4365,11 @@
     "expiry_milestone": 116
   },
   {
+    "name": "hide-content-suggestions-tiles",
+    "owners": [ "adamta@google.com", "bling-flags@google.com" ],
+    "expiry_milestone": 120
+  },
+  {
     "name": "hide-non-displayable-account-email",
     "owners": [ "ddac", "chrome-kids-eng@google.com" ],
     "expiry_milestone": 118
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 730db4c..7a6d4b8 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -3478,6 +3478,8 @@
     "attached hardware.";
 
 const char kWebXrRuntimeChoiceNone[] = "No Runtime";
+const char kWebXrRuntimeChoiceCardboard[] = "Cardboard";
+const char kWebXrRuntimeChoiceGVR[] = "Google VR Services";
 const char kWebXrRuntimeChoiceOpenXR[] = "OpenXR";
 
 const char kWebXrIncubationsName[] = "WebXR Incubations";
@@ -4427,6 +4429,12 @@
 const char kCormorantName[] = "Cormorant";
 const char kCormorantDescription[] = "Enables the experimental Cormorant UI.";
 
+#if BUILDFLAG(ENABLE_VR) && BUILDFLAG(ENABLE_OPENXR)
+const char kOpenXRName[] = "Enable OpenXR WebXR Runtime";
+const char kOpenXRDescription[] =
+    "Enables the use of the OpenXR runtime to create WebXR sessions.";
+#endif
+
 // Non-Android -----------------------------------------------------------------
 
 #else  // BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 7b439a34..a0138e6 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1992,6 +1992,8 @@
 extern const char kWebXrForceRuntimeDescription[];
 
 extern const char kWebXrRuntimeChoiceNone[];
+extern const char kWebXrRuntimeChoiceCardboard[];
+extern const char kWebXrRuntimeChoiceGVR[];
 extern const char kWebXrRuntimeChoiceOpenXR[];
 
 extern const char kWebXrIncubationsName[];
@@ -2530,6 +2532,11 @@
 extern const char kXsurfaceMetricsReportingName[];
 extern const char kXsurfaceMetricsReportingDescription[];
 
+#if BUILDFLAG(ENABLE_VR) && BUILDFLAG(ENABLE_OPENXR)
+extern const char kOpenXRName[];
+extern const char kOpenXRDescription[];
+#endif
+
 // Non-Android ----------------------------------------------------------------
 
 #else  // !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
index 7d28c0b..23232d1 100644
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -529,7 +529,6 @@
             new CachedFlag(DELAY_TEMP_STRIP_REMOVAL, true);
     public static final CachedFlag sDiscoverMultiColumn = new CachedFlag(FEED_MULTI_COLUMN, true);
     public static final CachedFlag sEarlyLibraryLoad = new CachedFlag(EARLY_LIBRARY_LOAD, true);
-    public static final CachedFlag sEmptyStates = new CachedFlag(EMPTY_STATES, true);
     public static final CachedFlag sExperimentsForAgsa = new CachedFlag(EXPERIMENTS_FOR_AGSA, true);
     public static final CachedFlag sFeedLoadingPlaceholder =
             new CachedFlag(FEED_LOADING_PLACEHOLDER, false);
@@ -628,7 +627,6 @@
         sDelayTempStripRemoval,
         sDiscoverMultiColumn,
         sEarlyLibraryLoad,
-        sEmptyStates,
         sFeedLoadingPlaceholder,
         sFoldableJankFix,
         sHideNonDisplayableAccountEmail,
diff --git a/chrome/browser/hid/chrome_hid_delegate_unittest.cc b/chrome/browser/hid/chrome_hid_delegate_unittest.cc
index 01a3045..d87dba81 100644
--- a/chrome/browser/hid/chrome_hid_delegate_unittest.cc
+++ b/chrome/browser/hid/chrome_hid_delegate_unittest.cc
@@ -793,7 +793,7 @@
   }
 #endif
 
-  void TestConnectionTrackerOpenDeviceNoConnectionCountUpdateNoNotification() {
+  void TestConnectionTrackerOpenDeviceNoConnectionCountUpdate() {
     mojo::Remote<blink::mojom::HidService> hid_service;
     ConnectToService(hid_service.BindNewPipeAndPassReceiver());
     auto origin = url::Origin::Create(origin_url_);
@@ -1032,11 +1032,13 @@
 };
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-class EnableWebHidOnExtensionServiceWorkerHelper {
+class DisableWebHidOnExtensionServiceWorkerHelper {
  public:
-  EnableWebHidOnExtensionServiceWorkerHelper() {
+  DisableWebHidOnExtensionServiceWorkerHelper() {
     scoped_feature_list_.InitWithFeatures(
-        {features::kEnableWebHidOnExtensionServiceWorker}, {});
+        /*enabled_features=*/{},
+        /*disabled_features=*/{
+            features::kEnableWebHidOnExtensionServiceWorker});
   }
 
  private:
@@ -1046,34 +1048,44 @@
 class ChromeHidDelegateExtensionServiceWorkerTest
     : public ChromeHidDelegateServiceWorkerTestBase {
  public:
+  ChromeHidDelegateExtensionServiceWorkerTest() {
+    supports_hid_connection_tracker_ = true;
+  }
   // ChromeHidTestHelper
   void SetUpOriginUrl() override { SetUpExtensionOriginUrl(); }
 };
 
-class ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest
+class ChromeHidDelegateExtensionServiceWorkerFeatureDisabledTest
     : public ChromeHidDelegateExtensionServiceWorkerTest,
-      public EnableWebHidOnExtensionServiceWorkerHelper {
+      public DisableWebHidOnExtensionServiceWorkerHelper {
  public:
-  ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest() {
-    supports_hid_connection_tracker_ = true;
+  ChromeHidDelegateExtensionServiceWorkerFeatureDisabledTest() {
+    // There is no hid connection tracker activity when
+    // features::kEnableWebHidOnExtensionServiceWorker is disabled.
+    supports_hid_connection_tracker_ = false;
   }
 };
 
-class ChromeHidDelegateServiceWorkerTestFeatureEnabledTest
-    : public ChromeHidDelegateServiceWorkerTest,
-      public EnableWebHidOnExtensionServiceWorkerHelper {};
-
 class ChromeHidDelegateExtensionRenderFrameTest
     : public ChromeHidDelegateRenderFrameTestBase {
  public:
+  ChromeHidDelegateExtensionRenderFrameTest() {
+    supports_hid_connection_tracker_ = true;
+  }
   // ChromeHidTestHelper
   void SetUpOriginUrl() override { SetUpExtensionOriginUrl(); }
 };
 
-class ChromeHidDelegateExtensionRenderFrameFeatureEnabledTest
+class ChromeHidDelegateExtensionRenderFrameFeatureDisabledTest
     : public ChromeHidDelegateExtensionRenderFrameTest,
-      public EnableWebHidOnExtensionServiceWorkerHelper {};
-
+      public DisableWebHidOnExtensionServiceWorkerHelper {
+ public:
+  ChromeHidDelegateExtensionRenderFrameFeatureDisabledTest() {
+    supports_hid_connection_tracker_ = false;
+  }
+  // ChromeHidTestHelper
+  void SetUpOriginUrl() override { SetUpExtensionOriginUrl(); }
+};
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 
 }  // namespace
@@ -1111,7 +1123,8 @@
   TestConnectAndNavigateCrossDocument(web_contents());
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, HidServiceNotConnected) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureDisabledTest,
+       HidServiceNotConnected) {
   TestHidServiceNotConnected();
 }
 
@@ -1119,11 +1132,6 @@
   TestHidServiceNotConnected();
 }
 
-TEST_F(ChromeHidDelegateServiceWorkerTestFeatureEnabledTest,
-       HidServiceNotConnected) {
-  TestHidServiceNotConnected();
-}
-
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 TEST_F(ChromeHidDelegateExtensionRenderFrameTest,
        FidoDeviceAllowedWithPrivilegedOrigin) {
@@ -1164,43 +1172,37 @@
   TestConnectAndNavigateCrossDocument(web_contents());
 }
 
-TEST_F(ChromeHidDelegateExtensionRenderFrameTest,
+TEST_F(ChromeHidDelegateExtensionRenderFrameFeatureDisabledTest,
        ConnectionTrackerOpenDeviceNoIndicatorNoNotification) {
-  TestConnectionTrackerOpenDeviceNoConnectionCountUpdateNoNotification();
+  TestConnectionTrackerOpenDeviceNoConnectionCountUpdate();
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
-       AddChangeRemoveDevice) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, AddChangeRemoveDevice) {
   TestAddChangeRemoveDevice();
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
-       NoPermissionDevice) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, NoPermissionDevice) {
   TestNoPermissionDevice();
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
-       ReconnectHidService) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, ReconnectHidService) {
   TestReconnectHidService();
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
-       RevokeDevicePermission) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, RevokeDevicePermission) {
   TestRevokeDevicePermission();
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest,
        RevokeDevicePermissionEphemeral) {
   TestRevokeDevicePermissionEphemeral();
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
-       ConnectAndDisconnect) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, ConnectAndDisconnect) {
   TestConnectAndDisconnect(/*web_contents=*/nullptr);
 }
 
-TEST_F(ChromeHidDelegateExtensionServiceWorkerFeatureEnabledTest,
-       ConnectAndRemove) {
+TEST_F(ChromeHidDelegateExtensionServiceWorkerTest, ConnectAndRemove) {
   TestConnectAndRemove(/*web_contents=*/nullptr);
 }
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/hid/hid_browsertest.cc b/chrome/browser/hid/hid_browsertest.cc
index 1ac336b..8ed93be8 100644
--- a/chrome/browser/hid/hid_browsertest.cc
+++ b/chrome/browser/hid/hid_browsertest.cc
@@ -244,16 +244,6 @@
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 };
 
-// Test fixture with kEnableWebHidOnExtensionServiceWorker enabled.
-class WebHidExtensionFeatureEnabledBrowserTest
-    : public WebHidExtensionBrowserTest {
- public:
-  WebHidExtensionFeatureEnabledBrowserTest() {
-    scoped_feature_list_.InitWithFeatures(
-        {features::kEnableWebHidOnExtensionServiceWorker}, {});
-  }
-};
-
 // Test fixture with kEnableWebHidOnExtensionServiceWorker disabled.
 class WebHidExtensionFeatureDisabledBrowserTest
     : public WebHidExtensionBrowserTest {
@@ -264,24 +254,6 @@
   }
 };
 
-IN_PROC_BROWSER_TEST_F(WebHidExtensionBrowserTest, FeatureDefaultDisabled) {
-  extensions::TestExtensionDir test_dir;
-
-  constexpr char kBackgroundJs[] = R"(
-    chrome.test.sendMessage("ready", async () => {
-      try {
-        chrome.test.assertEq(navigator.hid, undefined);
-        chrome.test.notifyPass();
-
-      } catch (e) {
-        chrome.test.fail(e.name + ':' + e.message);
-      }
-    });
-  )";
-
-  LoadExtensionAndRunTest(kBackgroundJs);
-}
-
 IN_PROC_BROWSER_TEST_F(WebHidExtensionFeatureDisabledBrowserTest,
                        FeatureDisabled) {
   extensions::TestExtensionDir test_dir;
@@ -301,7 +273,7 @@
   LoadExtensionAndRunTest(kBackgroundJs);
 }
 
-IN_PROC_BROWSER_TEST_F(WebHidExtensionFeatureEnabledBrowserTest, GetDevices) {
+IN_PROC_BROWSER_TEST_F(WebHidExtensionBrowserTest, GetDevices) {
   extensions::TestExtensionDir test_dir;
 
   auto device = CreateTestDeviceWithInputAndOutputReports();
@@ -322,8 +294,7 @@
   LoadExtensionAndRunTest(kBackgroundJs);
 }
 
-IN_PROC_BROWSER_TEST_F(WebHidExtensionFeatureEnabledBrowserTest,
-                       RequestDevice) {
+IN_PROC_BROWSER_TEST_F(WebHidExtensionBrowserTest, RequestDevice) {
   extensions::TestExtensionDir test_dir;
 
   constexpr char kBackgroundJs[] = R"(
@@ -340,8 +311,7 @@
   LoadExtensionAndRunTest(kBackgroundJs);
 }
 
-IN_PROC_BROWSER_TEST_F(WebHidExtensionFeatureEnabledBrowserTest,
-                       HidConnectionTracker) {
+IN_PROC_BROWSER_TEST_F(WebHidExtensionBrowserTest, HidConnectionTracker) {
   auto device = CreateTestDeviceWithInputAndOutputReports();
   hid_manager()->AddDevice(std::move(device));
 
diff --git a/chrome/browser/lacros/standalone_browser_test_controller.cc b/chrome/browser/lacros/standalone_browser_test_controller.cc
index 7b85174..173aeceb 100644
--- a/chrome/browser/lacros/standalone_browser_test_controller.cc
+++ b/chrome/browser/lacros/standalone_browser_test_controller.cc
@@ -180,6 +180,7 @@
   auto info = std::make_unique<WebAppInstallInfo>();
   info->start_url = GURL(sub_app_start_url);
   info->parent_app_id = parent_app_id;
+  info->title = u"Test Web App";
 
   Profile* profile = ProfileManager::GetPrimaryUserProfile();
   auto* provider = web_app::WebAppProvider::GetForWebApps(profile);
diff --git a/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_interactive_uitest.cc b/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_interactive_uitest.cc
index 440d138..293a1ec 100644
--- a/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_interactive_uitest.cc
+++ b/chrome/browser/metrics/desktop_session_duration/chrome_visibility_observer_interactive_uitest.cc
@@ -15,6 +15,10 @@
 #include "content/public/test/browser_test.h"
 #include "content/public/test/test_utils.h"
 
+#if BUILDFLAG(IS_MAC)
+#include "base/mac/mac_util.h"
+#endif
+
 namespace metrics {
 // Test class for |ChromeVisibilityObserver|.
 class ChromeVisibilityObserverInteractiveTest
@@ -63,6 +67,12 @@
 // separate sessions or not.
 IN_PROC_BROWSER_TEST_F(ChromeVisibilityObserverInteractiveTest,
                        VisibilityTest) {
+#if BUILDFLAG(IS_MAC)
+  if (base::mac::IsAtLeastOS13()) {
+    GTEST_SKIP() << "Broken on macOS 13: https://crbug.com/1447844";
+  }
+#endif
+
   // Observer should now be active as there is one active browser.
   WaitForActive(/*active=*/true);
 
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service.cc b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service.cc
index 079148e..cbb89e7e 100644
--- a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service.cc
+++ b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service.cc
@@ -190,6 +190,11 @@
 
   in_progress_query_clusters_tasks_.erase(pending_task_id);
 
+  // Within each cluster, sort visits.
+  for (auto& cluster : clusters) {
+    history_clusters::StableSortVisits(cluster.visits);
+  }
+
   // Do additional filtering on clusters.
   history_clusters::CoalesceRelatedSearches(clusters);
 
@@ -291,11 +296,6 @@
     return;
   }
 
-  // Within each cluster, sort visits.
-  for (auto& cluster : clusters) {
-    history_clusters::StableSortVisits(cluster.visits);
-  }
-
   if (module_ranker_) {
     module_ranker_->RankClusters(
         std::move(clusters),
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service_unittest.cc b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service_unittest.cc
index 31fbfed..4ad8ba88 100644
--- a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service_unittest.cc
+++ b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service_unittest.cc
@@ -162,7 +162,16 @@
   sample_non_srp_visit.score = 0.9;
 
   std::vector<history::ClusterVisit> visits;
-  visits.insert(visits.end(), srp_visits, sample_srp_visit);
+  if (srp_visits > 0) {
+    for (size_t i = 0; i < (srp_visits - 1u); i++) {
+      history::ClusterVisit sample_srp_visit_modified = sample_srp_visit;
+      sample_srp_visit.url_for_display =
+          u"https://default-engine.com/search?q=not+top+search";
+      sample_srp_visit.score = 0.3;
+      visits.push_back(sample_srp_visit_modified);
+    }
+    visits.push_back(sample_srp_visit);
+  }
   visits.insert(visits.end(), non_srp_visits, sample_non_srp_visit);
 
   std::string kSampleLabel = "LabelOne";
diff --git a/chrome/browser/performance_timeline_browsertest.cc b/chrome/browser/performance_timeline_browsertest.cc
index 82ac94eb..83eeff2 100644
--- a/chrome/browser/performance_timeline_browsertest.cc
+++ b/chrome/browser/performance_timeline_browsertest.cc
@@ -56,10 +56,13 @@
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_url));
 
   // fetch resource from extension.
-  EXPECT_EQ(true, content::EvalJs(
-                      web_contents(),
-                      "document.querySelector('#fetchResourceButton').click();",
-                      content::EXECUTE_SCRIPT_USE_MANUAL_REPLY));
+  content::DOMMessageQueue message_queue;
+  EXPECT_TRUE(content::ExecJs(
+      web_contents(),
+      "document.querySelector('#fetchResourceButton').click();"));
+  std::string ack;
+  EXPECT_TRUE(message_queue.WaitForMessage(&ack));
+  EXPECT_EQ("true", ack);
 
   // There should be 0 resource entry emitted.
   EXPECT_EQ(content::EvalJs(web_contents(), "getResourceTimingEntryCount();")
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index a4c3144..eacae03 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -827,6 +827,9 @@
   { key::kEncryptedClientHelloEnabled,
     prefs::kEncryptedClientHelloEnabled,
     base::Value::Type::BOOLEAN },
+  { key::kRSAKeyUsageForLocalAnchorsEnabled,
+    prefs::kRSAKeyUsageForLocalAnchorsEnabled,
+    base::Value::Type::BOOLEAN },
   { key::kSSLErrorOverrideAllowed,
     prefs::kSSLErrorOverrideAllowed,
     base::Value::Type::BOOLEAN },
diff --git a/chrome/browser/policy/policy_network_browsertest.cc b/chrome/browser/policy/policy_network_browsertest.cc
index 9bb7efd..e183834 100644
--- a/chrome/browser/policy/policy_network_browsertest.cc
+++ b/chrome/browser/policy/policy_network_browsertest.cc
@@ -46,12 +46,20 @@
     std::u16string title;
   };
 
-  bool StartTestServer(const net::SSLServerConfig ssl_config) {
+  bool StartTestServer(const net::SSLServerConfig& ssl_config) {
     https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_OK, ssl_config);
     https_server_.ServeFilesFromSourceDirectory("chrome/test/data");
     return https_server_.Start();
   }
 
+  bool StartTestServer(
+      const net::EmbeddedTestServer::ServerCertificateConfig& cert_config,
+      const net::SSLServerConfig& ssl_config) {
+    https_server_.SetSSLConfig(cert_config, ssl_config);
+    https_server_.ServeFilesFromSourceDirectory("chrome/test/data");
+    return https_server_.Start();
+  }
+
   bool GetBooleanPref(const std::string& pref_name) {
     return g_browser_process->local_state()->GetBoolean(pref_name);
   }
@@ -341,4 +349,104 @@
   EXPECT_EQ(u"Title Of More Awesomeness", result.title);
 }
 
+class RSAKeyUsageDisabledPolicyTest : public SSLPolicyTest {
+ public:
+  RSAKeyUsageDisabledPolicyTest() {
+    scoped_feature_list_.InitAndDisableFeature(
+        net::features::kRSAKeyUsageForLocalAnchors);
+  }
+
+ private:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(RSAKeyUsageDisabledPolicyTest, RSAKeyUsagePolicy) {
+  net::EmbeddedTestServer::ServerCertificateConfig cert_config;
+  cert_config.key_usages = {net::KEY_USAGE_BIT_KEY_ENCIPHERMENT};
+  net::SSLServerConfig ssl_config;
+  ssl_config.version_max = net::SSL_PROTOCOL_VERSION_TLS1_2;
+  // 0xc02f is TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, which expects the
+  // digitalSignature key usage bit.
+  ssl_config.cipher_suite_for_testing = 0xc02f;
+  ASSERT_TRUE(StartTestServer(cert_config, ssl_config));
+
+  // By default, key usage is not checked by feature flag.
+  LoadResult result = LoadPage("/title2.html?1");
+  EXPECT_TRUE(result.success);
+  EXPECT_EQ(u"Title Of Awesomeness", result.title);
+
+  // Enable the check by policy.
+  PolicyMap policies;
+  SetPolicy(&policies, key::kRSAKeyUsageForLocalAnchorsEnabled,
+            base::Value(true));
+  UpdateProviderPolicy(policies);
+  content::FlushNetworkServiceInstanceForTesting();
+
+  // The page load should now fail.
+  EXPECT_TRUE(GetBooleanPref(prefs::kRSAKeyUsageForLocalAnchorsEnabled));
+  result = LoadPage("/title2.html?2");
+  EXPECT_FALSE(result.success);
+
+  // Disable the check by policy.
+  SetPolicy(&policies, key::kRSAKeyUsageForLocalAnchorsEnabled,
+            base::Value(false));
+  UpdateProviderPolicy(policies);
+  content::FlushNetworkServiceInstanceForTesting();
+
+  // The page load should succeed again.
+  result = LoadPage("/title2.html?3");
+  EXPECT_TRUE(result.success);
+  EXPECT_EQ(u"Title Of Awesomeness", result.title);
+}
+
+class RSAKeyUsageEnabledPolicyTest : public SSLPolicyTest {
+ public:
+  RSAKeyUsageEnabledPolicyTest() {
+    scoped_feature_list_.InitAndEnableFeature(
+        net::features::kRSAKeyUsageForLocalAnchors);
+  }
+
+ private:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(RSAKeyUsageEnabledPolicyTest, RSAKeyUsagePolicy) {
+  net::EmbeddedTestServer::ServerCertificateConfig cert_config;
+  cert_config.key_usages = {net::KEY_USAGE_BIT_KEY_ENCIPHERMENT};
+  net::SSLServerConfig ssl_config;
+  ssl_config.version_max = net::SSL_PROTOCOL_VERSION_TLS1_2;
+  // 0xc02f is TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, which expects the
+  // digitalSignature key usage bit.
+  ssl_config.cipher_suite_for_testing = 0xc02f;
+  ASSERT_TRUE(StartTestServer(cert_config, ssl_config));
+
+  // By default, key usage is checked by feature flag.
+  LoadResult result = LoadPage("/title2.html?1");
+  EXPECT_FALSE(result.success);
+
+  // Disable the check by policy.
+  PolicyMap policies;
+  SetPolicy(&policies, key::kRSAKeyUsageForLocalAnchorsEnabled,
+            base::Value(false));
+  UpdateProviderPolicy(policies);
+  content::FlushNetworkServiceInstanceForTesting();
+
+  // The page load should now succeed.
+  EXPECT_FALSE(GetBooleanPref(prefs::kRSAKeyUsageForLocalAnchorsEnabled));
+  result = LoadPage("/title2.html?2");
+  EXPECT_TRUE(result.success);
+  EXPECT_EQ(u"Title Of Awesomeness", result.title);
+
+  // Enable the check by policy.
+  SetPolicy(&policies, key::kRSAKeyUsageForLocalAnchorsEnabled,
+            base::Value(true));
+  UpdateProviderPolicy(policies);
+  content::FlushNetworkServiceInstanceForTesting();
+
+  // The page load should fail again.
+  EXPECT_TRUE(GetBooleanPref(prefs::kRSAKeyUsageForLocalAnchorsEnabled));
+  result = LoadPage("/title2.html?3");
+  EXPECT_FALSE(result.success);
+}
+
 }  // namespace policy
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 9aa9afc..ffc921a 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -848,6 +848,12 @@
     "accessibility.screen_ai.scheduled_deletion_time";
 #endif
 
+// Deprecated 05/2023.
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+const char kEventRemappedToRightClick[] =
+    "ash.settings.event_remapped_to_right_click";
+#endif
+
 // Register local state used only for migration (clearing or moving to a new
 // key).
 void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
@@ -1185,6 +1191,11 @@
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   registry->RegisterStringPref(kSamlPasswordSyncToken, std::string());
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+// Deprecated 05/2023.
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  registry->RegisterBooleanPref(kEventRemappedToRightClick, false);
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 }
 
 }  // namespace
@@ -2248,6 +2259,11 @@
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 // Added 05/2023.
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  profile_prefs->ClearPref(kEventRemappedToRightClick);
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+// Added 05/2023.
 #if BUILDFLAG(IS_ANDROID)
   profile_prefs->ClearPref(kTimesUPMAuthErrorShown);
 #endif  // BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 7e25c4f..84517b5 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -3563,7 +3563,7 @@
   menu_model_.AddItemWithIcon(
       IDC_SEND_TAB_TO_SELF,
       l10n_util::GetStringUTF16(IDS_MENU_SEND_TAB_TO_SELF),
-      ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon));
+      ui::ImageModel::FromVectorIcon(kDevicesIcon));
 #endif
 }
 
diff --git a/chrome/browser/resources/chromeos/login/BUILD.gn b/chrome/browser/resources/chromeos/login/BUILD.gn
index edb9b2e..b454940 100644
--- a/chrome/browser/resources/chromeos/login/BUILD.gn
+++ b/chrome/browser/resources/chromeos/login/BUILD.gn
@@ -216,6 +216,7 @@
     "display_manager.js",
     "install_oobe_error_store.js",
     "i18n_setup.js",
+    "lazy_load_screens.js",
     "login_ui_tools.js",
     "multi_tap_detector.js",
     "oobe.css",
@@ -225,6 +226,7 @@
     "oobe_screen.css",
     "oobe_trace.js",
     "oobe_trace_start.js",
+    "priority_screens_oobe_flow.js",
     "screens.js",
   ]
 }
diff --git a/chrome/browser/resources/chromeos/login/lazy_load_screens.js b/chrome/browser/resources/chromeos/login/lazy_load_screens.js
new file mode 100644
index 0000000..7fa8555
--- /dev/null
+++ b/chrome/browser/resources/chromeos/login/lazy_load_screens.js
@@ -0,0 +1,62 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import { assert } from '//resources/ash/common/assert.js';
+
+import {loadTimeData} from './i18n_setup.js';
+import {addScreensToMainContainer} from './login_ui_tools.js';
+import {TraceEvent, traceExecution} from './oobe_trace.js';
+import {commonScreensList, loginScreensList, oobeScreensList} from './screens.js';
+
+// Add OOBE or LOGIN screens to the document.
+const isOobeFlow = loadTimeData.getBoolean('isOobeFlow');
+const flowSpecificScreensList = isOobeFlow ? oobeScreensList : loginScreensList;
+const lazyLoadingEnabled = loadTimeData.getBoolean('isOobeLazyLoadingEnabled');
+
+if (lazyLoadingEnabled) {
+  addScreensAsync();
+} else {
+  addScreensSynchronously();
+}
+
+/**
+ * Add screens to the document synchronously, blocking the main thread.
+ */
+function addScreensSynchronously() {
+  addScreensToMainContainer(commonScreensList);
+  traceExecution(TraceEvent.COMMON_SCREENS_ADDED);
+  addScreensToMainContainer(flowSpecificScreensList);
+  traceExecution(TraceEvent.REMAINING_SCREENS_ADDED);
+  document.dispatchEvent(new CustomEvent('oobe-screens-loaded'));
+}
+
+/**
+ * Add screens to the document asynchronously. Follows the same sequence logical
+ * sequence as its synchronous counterpart. However, instead of blocking the
+ * main thread, the actual adding of the screens are done via scheduling tasks.
+ */
+function addScreensAsync() {
+  if (commonScreensList.length > 0) {
+    const nextScreens = commonScreensList.pop();
+    addScreensToMainContainer([nextScreens]);
+    setTimeout(addScreensAsync, 0);
+
+    if (commonScreensList.length == 0) {
+      traceExecution(TraceEvent.COMMON_SCREENS_ADDED);
+    }
+  } else if (flowSpecificScreensList.length > 0) {
+    const nextScreens = flowSpecificScreensList.pop();
+    addScreensToMainContainer([nextScreens]);
+
+    if (flowSpecificScreensList.length > 0) {
+      setTimeout(addScreensAsync, 0);
+    } else {
+      traceExecution(TraceEvent.REMAINING_SCREENS_ADDED);
+      document.dispatchEvent(new CustomEvent('oobe-screens-loaded'));
+      // Finished
+    }
+  } else {
+    assert(false, 'NOTREACHED()');
+  }
+}
diff --git a/chrome/browser/resources/chromeos/login/oobe.html b/chrome/browser/resources/chromeos/login/oobe.html
index 071b5cf..6b7d78c2 100644
--- a/chrome/browser/resources/chromeos/login/oobe.html
+++ b/chrome/browser/resources/chromeos/login/oobe.html
@@ -22,6 +22,7 @@
   <script type="module" src="./install_oobe_error_store.js"></script>
 
   <!-- OOBE Start Script -->
+  <link rel="modulepreload" href="chrome://oobe/screens.js">
   <script type="module" src="./oobe.js"></script>
 </head>
 <custom-style>
diff --git a/chrome/browser/resources/chromeos/login/oobe.js b/chrome/browser/resources/chromeos/login/oobe.js
index 7a9b918..bfd03a6e 100644
--- a/chrome/browser/resources/chromeos/login/oobe.js
+++ b/chrome/browser/resources/chromeos/login/oobe.js
@@ -9,24 +9,23 @@
 // clang-format on
 
 
-
 import {assert} from '//resources/ash/common/assert.js';
 import {$} from '//resources/ash/common/util.js';
 import {refreshColorCss, startColorChangeUpdater} from '//resources/cr_components/color_change_listener/colors_css_updater.js';
+import {getTrustedScriptURL} from '//resources/js/static_types.js';
 
 import {Oobe} from './cr_ui.js';
 import * as OobeDebugger from './debug/debug.js';
 import * as QuickStartDebugger from './debug/quick_start_debugger.js';
 import * as OobeTestApi from './test_api/test_api.js';
 import {loadTimeData} from './i18n_setup.js';
-import { addScreensToMainContainer } from './login_ui_tools.js';
+import {addScreensToMainContainer} from './login_ui_tools.js';
 import {MultiTapDetector} from './multi_tap_detector.js';
-import { TraceEvent, traceExecution } from './oobe_trace.js';
-import {commonScreensList, loginScreensList, oobeScreensList} from './screens.js';
+import {TraceEvent, traceExecution} from './oobe_trace.js';
+import {priorityOobeScreenList} from './priority_screens_oobe_flow.js';
 
 // Everything has been imported at this point.
 traceExecution(TraceEvent.FIRST_LINE_AFTER_IMPORTS);
-chrome.send('initializeCoreHandler');
 
 // Create the global values attached to `window` that are used
 // for accessing OOBE controls from the browser side.
@@ -91,27 +90,63 @@
   traceExecution(TraceEvent.OOBE_INITIALIZED);
 }
 
+function initAfterDomLoaded() {
+  document.removeEventListener('oobe-screens-loaded', initAfterDomLoaded);
+  if (document.readyState === 'loading') {
+    document.addEventListener('DOMContentLoaded', initializeOobe);
+  } else {
+    initializeOobe();
+  }
+}
+
+/**
+ * Adds a separate script to the page that imports most of the screens used
+ * during OOBE. Once this script finishes, it fires the 'oobe-screens-loaded'
+ * event, which is then handled by |initAfterDomLoaded| function. This function
+ * fires the |priorityScreensLoaded| signal which is used to notify the browser
+ * that critical screens (Welcome) have been added to the document.
+ */
+function lazyLoadOobe() {
+  chrome.send('priorityScreensLoaded');
+  document.addEventListener('oobe-screens-loaded', initAfterDomLoaded);
+  const script = document.createElement('script');
+  script.type = 'module';
+  script.src = getTrustedScriptURL`./lazy_load_screens.js`;
+  document.body.appendChild(script);
+}
+
 /**
  * ----------- OOBE Execution Begins -----------
+ * |startOobe| is the main entry point for OOBE and it is invoked at the bottom
+ * of this file. Depending on the flow (OOBE vs. LOGIN) the following steps are
+ * performed:
+ *
+ * OOBE:
+ * 1. Add priority screens (Only 'Welcome' at this time) to the HTML document.
+ * 2. Jump to |lazyLoadOobe| which will add the remaining screens using a
+ *    separate script and trigger the 'oobe-screens-loaded' event.
+ * 3. The 'oobe-screens-loaded' event is then handled by |initAfterDomLoaded|,
+ *    which calls |initializeOobe|.
+ *
+ * LOGIN:
+ * For the 'login' flow, the steps are almost the same, with the only exception
+ * that there are no priority screens to be added, so it jumps immediately to
+ * step (2) and skips step (1).
  */
 function startOobe() {
   // Ensure that there is a global error listener when OOBE starts.
   // This error listener is added in the main HTML document.
   assert(window.OobeErrorStore, 'OobeErrorStore not present on global object!');
 
+  chrome.send('initializeCoreHandler');
+
   // Update localized strings at the document level.
   Oobe.updateDocumentLocalizedStrings();
 
   prepareGlobalValues();
 
-  // Add common screens to the document.
-  addScreensToMainContainer(commonScreensList);
-  traceExecution(TraceEvent.COMMON_SCREENS_ADDED);
-
   // Add OOBE or LOGIN screens to the document.
   const isOobeFlow = loadTimeData.getBoolean('isOobeFlow');
-  addScreensToMainContainer(isOobeFlow ? oobeScreensList : loginScreensList);
-  traceExecution(TraceEvent.REMAINING_SCREENS_ADDED);
 
   // The default is to have the class 'oobe-display' in <body> for the OOBE
   // flow. For the 'Add Person' flow, we remove it.
@@ -123,10 +158,16 @@
         'The body of the document must contain oobe-display as a class for the OOBE flow!');
   }
 
+  // For the OOBE flow, we prioritize the loading of the Welcome screen.
+  if (isOobeFlow) {
+    addScreensToMainContainer(priorityOobeScreenList);
+    traceExecution(TraceEvent.PRIORITY_SCREENS_ADDED);
+  }
+
   if (document.readyState === 'loading') {
-    document.addEventListener('DOMContentLoaded', initializeOobe);
+    document.addEventListener('DOMContentLoaded', lazyLoadOobe);
   } else {
-    initializeOobe();
+    lazyLoadOobe();
   }
 }
 
diff --git a/chrome/browser/resources/chromeos/login/oobe_trace.js b/chrome/browser/resources/chromeos/login/oobe_trace.js
index 0598321..c7f912a 100644
--- a/chrome/browser/resources/chromeos/login/oobe_trace.js
+++ b/chrome/browser/resources/chromeos/login/oobe_trace.js
@@ -33,6 +33,7 @@
 export const TraceEvent = {
   FIRST_INSTRUCTION: 'FIRST_INSTRUCTION',
   FIRST_LINE_AFTER_IMPORTS: 'FIRST_LINE_AFTER_IMPORTS',
+  PRIORITY_SCREENS_ADDED: 'PRIORITY_SCREENS_ADDED',
   COMMON_SCREENS_ADDED: 'COMMON_SCREENS_ADDED',
   REMAINING_SCREENS_ADDED: 'REMAINING_SCREENS_ADDED',
   DOM_CONTENT_LOADED: 'DOM_CONTENT_LOADED',
@@ -127,6 +128,7 @@
   const EventPrintOrder = [
     TraceEvent.FIRST_INSTRUCTION,
     TraceEvent.FIRST_LINE_AFTER_IMPORTS,
+    TraceEvent.PRIORITY_SCREENS_ADDED,
     TraceEvent.COMMON_SCREENS_ADDED,
     TraceEvent.REMAINING_SCREENS_ADDED,
     TraceEvent.DOM_CONTENT_LOADED,
diff --git a/chrome/browser/resources/chromeos/login/priority_screens_oobe_flow.js b/chrome/browser/resources/chromeos/login/priority_screens_oobe_flow.js
new file mode 100644
index 0000000..934facb
--- /dev/null
+++ b/chrome/browser/resources/chromeos/login/priority_screens_oobe_flow.js
@@ -0,0 +1,9 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import './screens/oobe/welcome.js';
+
+export const priorityOobeScreenList = [
+  {tag: 'oobe-welcome-element', id: 'connect'},
+];
diff --git a/chrome/browser/resources/chromeos/login/screens.js b/chrome/browser/resources/chromeos/login/screens.js
index 6fc1750..a588850 100644
--- a/chrome/browser/resources/chromeos/login/screens.js
+++ b/chrome/browser/resources/chromeos/login/screens.js
@@ -67,7 +67,6 @@
 import './screens/oobe/packaged_license.js';
 import './screens/oobe/quick_start.js';
 import './screens/oobe/update.js';
-import './screens/oobe/welcome.js';
 
 /**
  * List of screens that are used for both `oobe` and `login` flows.
@@ -185,5 +184,4 @@
   {tag: 'packaged-license-element', id: 'packaged-license'},
   {tag: 'quick-start-element', id: 'quick-start'},
   {tag: 'update-element', id: 'oobe-update'},
-  {tag: 'oobe-welcome-element', id: 'connect'},
 ];
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/welcome.js b/chrome/browser/resources/chromeos/login/screens/oobe/welcome.js
index cd2b96c6..c1ed5e4 100644
--- a/chrome/browser/resources/chromeos/login/screens/oobe/welcome.js
+++ b/chrome/browser/resources/chromeos/login/screens/oobe/welcome.js
@@ -9,6 +9,7 @@
 import '//resources/cr_elements/cr_input/cr_input.js';
 import '//resources/cr_elements/cr_shared_vars.css.js';
 import '//resources/polymer/v3_0/iron-icon/iron-icon.js';
+import '../../components/oobe_a11y_option.js';
 import '../../components/oobe_icons.html.js';
 import '../../components/oobe_i18n_dropdown.js';
 import '../../components/common_styles/oobe_common_styles.css.js';
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.html b/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.html
index aba47b8..5f14f8f 100644
--- a/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.html
+++ b/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.html
@@ -52,6 +52,14 @@
     grid-template-columns: auto;
   }
 
+  #getStarted[disabled] {
+    opacity: 0;
+  }
+
+  #getStarted {
+    transition: opacity 250ms linear 0ms;
+  }
+
   #buttons {
     grid-column: 1 / span 1;
     grid-row: 1 / span 1;
@@ -125,6 +133,7 @@
   :host-context(.simon-enabled) #title {
     font-size: 52px;
     line-height: 60px;
+    margin-bottom: 48px;
     margin-top: auto;
   }
 
@@ -135,11 +144,6 @@
     line-height: 32px;
     margin-top: 16px;
   }
-  :host-context(.simon-enabled) #subtitle {
-    font-size: 22px;
-    line-height: 28px;
-    margin-top: 24px;
-  }
 
   :host-context([orientation='horizontal']) #subtitle {
     margin-bottom: 64px;
@@ -147,9 +151,6 @@
   :host-context([orientation='vertical']) #subtitle {
     margin-bottom: 40px;
   }
-  :host-context(.simon-enabled) #subtitle {
-    margin-bottom: 56px;
-  }
 
   .welcome-header-text {
     font-weight: var(--oobe-welcome-header-font-weight);
@@ -170,9 +171,11 @@
   <h1 id="title" class="welcome-header-text">
     [[i18nDynamic(locale, 'welcomeScreenGreeting')]]
   </h1>
-  <div id="subtitle" class="welcome-header-text">
-    [[i18nDynamic(locale, 'welcomeScreenGreetingSubtitle')]]
-  </div>
+  <template is="dom-if" if="[[!isSimon_]]">
+    <div id="subtitle" class="welcome-header-text">
+      [[i18nDynamic(locale, 'welcomeScreenGreetingSubtitle')]]
+    </div>
+  </template>
   <div id="content">
     <div id="buttons" class="layout vertical">
       <oobe-icon-button
diff --git a/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.js b/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.js
index d7590d0..98fe29b0e 100644
--- a/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.js
+++ b/chrome/browser/resources/chromeos/login/screens/oobe/welcome_dialog.js
@@ -8,6 +8,7 @@
 import '../../components/oobe_icons.html.js';
 import '../../components/common_styles/oobe_dialog_host_styles.css.js';
 import '../../components/oobe_vars/oobe_shared_vars.css.js';
+import '../../components/buttons/oobe_icon_button.js';
 
 import {assert} from '//resources/ash/common/assert.js';
 import {loadTimeData} from '//resources/ash/common/load_time_data.m.js';
@@ -123,10 +124,34 @@
     this.isQuickStartEnabled = false;
   }
 
+  ready() {
+    super.ready();
+    if (loadTimeData.getBoolean('isOobeLazyLoadingEnabled')) {
+      // Disable the 'Get Started' & 'Enable Debugging' button until OOBE is
+      // fully initialized.
+      this.$.getStarted.disabled = true;
+      this.$.enableDebuggingButton.disabled = true;
+      document.addEventListener(
+        'oobe-screens-loaded', this.enableButtonsWhenLoaded.bind(this));
+    }
+  }
+
   onBeforeShow() {
     this.setVideoPlay_(true);
   }
 
+  /**
+   * Since we prioritize the showing of the the Welcome Screen, it becomes
+   * visible before the remaining of the OOBE flow is fully loaded. For this
+   * reason, we listen to the |oobe-screens-loaded| signal and enable it.
+   */
+  enableButtonsWhenLoaded(e) {
+    document.removeEventListener(
+      'oobe-screens-loaded', this.enableButtonsWhenLoaded.bind(this));
+    this.$.getStarted.disabled = false;
+    this.$.enableDebuggingButton.disabled = false;
+  }
+
   onLanguageClicked_(e) {
     this.focusedElement_ = 'languageSelectionButton';
     this.dispatchEvent(new CustomEvent('language-button-clicked', {
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/suggest_tile.html b/chrome/browser/resources/new_tab_page/modules/history_clusters/suggest_tile.html
index 25c2474..c2b3244 100644
--- a/chrome/browser/resources/new_tab_page/modules/history_clusters/suggest_tile.html
+++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/suggest_tile.html
@@ -44,7 +44,7 @@
     -webkit-mask-position: center;
     -webkit-mask-repeat: no-repeat;
     -webkit-mask-size: 20px;
-    background-color: var(--color-new-tab-page-primary-foreground);
+    background-color: var(--color-new-tab-page-secondary-foreground);
     background-position: center center;
     background-repeat: no-repeat;
     background-size: 20px;
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/tile.html b/chrome/browser/resources/new_tab_page/modules/history_clusters/tile.html
index 51048ec..74f9f5a0 100644
--- a/chrome/browser/resources/new_tab_page/modules/history_clusters/tile.html
+++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/tile.html
@@ -71,6 +71,7 @@
   }
 
   #icon {
+    background: white;
     height: 16px;
     margin-inline-end: 8px;
     width: 16px;
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/hotspot_summary_item.ts b/chrome/browser/resources/settings/chromeos/internet_page/hotspot_summary_item.ts
index dd21b50..c7ab4d8 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/hotspot_summary_item.ts
+++ b/chrome/browser/resources/settings/chromeos/internet_page/hotspot_summary_item.ts
@@ -31,7 +31,7 @@
     Constructor<PolymerElement&I18nMixinInterface&
                 CrPolicyNetworkBehaviorMojoInterface>;
 
-class HotspotSummaryItemElement extends HotspotSummaryItemElementBase {
+export class HotspotSummaryItemElement extends HotspotSummaryItemElementBase {
   static get is() {
     return 'hotspot-summary-item' as const;
   }
diff --git a/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_add_account_dialog.ts b/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_add_account_dialog.ts
index 5a83914..94ecbee 100644
--- a/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_add_account_dialog.ts
+++ b/chrome/browser/resources/settings/chromeos/kerberos_page/kerberos_add_account_dialog.ts
@@ -42,8 +42,8 @@
 }
 
 /**
- * The default placeholder that is shown in the username field
- * of authentication dialog.
+ * The default placeholder that is shown in the username field of the
+ * authentication dialog.
  */
 const DEFAULT_USERNAME_PLACEHOLDER: string = 'user@example.com';
 
@@ -95,11 +95,6 @@
         value: '',
       },
 
-      rememberPassword_: {
-        type: Boolean,
-        value: false,
-      },
-
       generalErrorText_: {
         type: String,
         value: '',
@@ -136,7 +131,17 @@
       },
 
       /**
-       * Whether the remember password options is allowed by policy.
+       * Whether the password should be remembered by default.
+       */
+      rememberPasswordByDefault_: {
+        type: Boolean,
+        value() {
+          return loadTimeData.getBoolean('kerberosRememberPasswordByDefault');
+        },
+      },
+
+      /**
+       * Whether the remember password option is allowed by policy.
        */
       rememberPasswordEnabled_: {
         type: Boolean,
@@ -182,6 +187,7 @@
   private passwordErrorText_: string;
   private password_: string;
   private prefillDomain_: string;
+  private rememberPasswordByDefault_: boolean;
   private rememberPasswordEnabled_: boolean;
   private rememberPassword_: boolean;
   private showAdvancedConfig_: boolean;
@@ -194,6 +200,8 @@
     super();
 
     this.useRememberedPassword_ = false;
+    this.rememberPassword_ = this.rememberPasswordByDefault_ &&
+        this.rememberPasswordEnabled_ && !this.isGuestMode_;
     this.config_ = '';
     this.title_ = '';
     this.actionButtonLabel_ = '';
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.ts b/chrome/browser/resources/settings/chromeos/os_settings.ts
index 52dfb7a..231d9be 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.ts
+++ b/chrome/browser/resources/settings/chromeos/os_settings.ts
@@ -126,6 +126,7 @@
 export {SettingsPerDeviceTouchpadElement} from './device_page/per_device_touchpad.js';
 export {SettingsPerDeviceTouchpadSubsectionElement} from './device_page/per_device_touchpad_subsection.js';
 export {OsSettingsCellularSetupDialogElement} from './internet_page/cellular_setup_dialog.js';
+export {HotspotSummaryItemElement} from './internet_page/hotspot_summary_item.js';
 export {InternetPageBrowserProxy, InternetPageBrowserProxyImpl} from './internet_page/internet_page_browser_proxy.js';
 export {NetworkSummaryElement} from './internet_page/network_summary.js';
 export {NetworkSummaryItemElement} from './internet_page/network_summary_item.js';
diff --git a/chrome/browser/resources/side_panel/companion/companion.ts b/chrome/browser/resources/side_panel/companion/companion.ts
index 09228c9..f7b475c 100644
--- a/chrome/browser/resources/side_panel/companion/companion.ts
+++ b/chrome/browser/resources/side_panel/companion/companion.ts
@@ -32,6 +32,7 @@
   // Arguments for MethodType.kOnPromoAction.
   PROMO_ACTION = 'promoAction',
   PROMO_TYPE = 'promoType',
+  EXPS_PROMO_URL = 'expsPromoUrl',
 
   // Arguments for MethodType.kOnPhFeedback.
   PH_FEEDBACK = 'phFeedback',
@@ -183,8 +184,11 @@
   } else if (methodType === MethodType.kOnPromoAction) {
     const promoType = data[ParamType.PROMO_TYPE];
     const promoAction = data[ParamType.PROMO_ACTION];
+    const expsPromoUrl = new Url();
+    expsPromoUrl.url = data[ParamType.EXPS_PROMO_URL] || '';
     if (validatePromoArguments(promoType, promoAction)) {
-      companionProxy.handler.onPromoAction(promoType, promoAction);
+      companionProxy.handler.onPromoAction(
+          promoType, promoAction, expsPromoUrl);
     }
   } else if (methodType === MethodType.kOnExpsOptInStatusAvailable) {
     companionProxy.handler.onExpsOptInStatusAvailable(
diff --git a/chrome/browser/resources/side_panel/read_anything/app.ts b/chrome/browser/resources/side_panel/read_anything/app.ts
index a549df2..184b2fe 100644
--- a/chrome/browser/resources/side_panel/read_anything/app.ts
+++ b/chrome/browser/resources/side_panel/read_anything/app.ts
@@ -72,30 +72,30 @@
 // Called by ReadAnythingPageHandler via callback router. //
 ////////////////////////////////////////////////////////////
 
-// The chrome.readAnything context is created by the ReadAnythingAppController
+// The chrome.readingMode context is created by the ReadAnythingAppController
 // which is only instantiated when the kReadAnything feature is enabled. This
-// check if chrome.readAnything exists prevents runtime errors when the feature
+// check if chrome.readingMode exists prevents runtime errors when the feature
 // is disabled.
-if (chrome.readAnything) {
-  chrome.readAnything.updateContent = () => {
+if (chrome.readingMode) {
+  chrome.readingMode.updateContent = () => {
     const readAnythingApp = document.querySelector('read-anything-app');
     assert(readAnythingApp);
     readAnythingApp.updateContent();
   };
 
-  chrome.readAnything.updateSelection = () => {
+  chrome.readingMode.updateSelection = () => {
     const readAnythingApp = document.querySelector('read-anything-app');
     assert(readAnythingApp);
     readAnythingApp.updateSelection();
   };
 
-  chrome.readAnything.updateTheme = () => {
+  chrome.readingMode.updateTheme = () => {
     const readAnythingApp = document.querySelector('read-anything-app');
     assert(readAnythingApp);
     readAnythingApp.updateTheme();
   };
 
-  chrome.readAnything.showLoading = () => {
+  chrome.readingMode.showLoading = () => {
     const readAnythingApp = document.querySelector('read-anything-app');
     assert(readAnythingApp);
     readAnythingApp.showLoading();
@@ -141,8 +141,8 @@
 
   override connectedCallback() {
     super.connectedCallback();
-    if (chrome.readAnything) {
-      chrome.readAnything.onConnected();
+    if (chrome.readingMode) {
+      chrome.readingMode.onConnected();
     }
 
     this.showLoading();
@@ -162,25 +162,25 @@
       const anchorNodeId = this.domNodeToAxNodeIdMap_.get(anchorNode);
       const focusNodeId = this.domNodeToAxNodeIdMap_.get(focusNode);
       assert(anchorNodeId && focusNodeId);
-      chrome.readAnything.onSelectionChange(
+      chrome.readingMode.onSelectionChange(
           anchorNodeId, anchorOffset, focusNodeId, focusOffset);
     };
 
     document.onscroll = () => {
-      chrome.readAnything.onScroll(this.scrollingOnSelection_);
+      chrome.readingMode.onScroll(this.scrollingOnSelection_);
       this.scrollingOnSelection_ = false;
     };
 
     // Pass copy commands to main page. Copy commands will not work if they are
     // disabled on the main page.
     document.oncopy = () => {
-      chrome.readAnything.onCopy();
+      chrome.readingMode.onCopy();
       return false;
     };
   }
 
   private buildSubtree_(nodeId: number): Node {
-    let htmlTag = chrome.readAnything.getHtmlTag(nodeId);
+    let htmlTag = chrome.readingMode.getHtmlTag(nodeId);
 
     // Text nodes do not have an html tag.
     if (!htmlTag.length) {
@@ -195,18 +195,18 @@
 
     const element = document.createElement(htmlTag);
     this.domNodeToAxNodeIdMap_.set(element, nodeId);
-    const direction = chrome.readAnything.getTextDirection(nodeId);
+    const direction = chrome.readingMode.getTextDirection(nodeId);
     if (direction) {
       element.setAttribute('dir', direction);
     }
-    const url = chrome.readAnything.getUrl(nodeId);
+    const url = chrome.readingMode.getUrl(nodeId);
     if (url && element.nodeName === 'A') {
       element.setAttribute('href', url);
       element.onclick = () => {
-        chrome.readAnything.onLinkClicked(nodeId);
+        chrome.readingMode.onLinkClicked(nodeId);
       };
     }
-    const language = chrome.readAnything.getLanguage(nodeId);
+    const language = chrome.readingMode.getLanguage(nodeId);
     if (language) {
       element.setAttribute('lang', language);
     }
@@ -216,18 +216,18 @@
   }
 
   private appendChildSubtrees_(node: Node, nodeId: number) {
-    for (const childNodeId of chrome.readAnything.getChildren(nodeId)) {
+    for (const childNodeId of chrome.readingMode.getChildren(nodeId)) {
       const childNode = this.buildSubtree_(childNodeId);
       node.appendChild(childNode);
     }
   }
 
   private createTextNode_(nodeId: number): Node {
-    const textContent = chrome.readAnything.getTextContent(nodeId);
+    const textContent = chrome.readingMode.getTextContent(nodeId);
     const textNode = document.createTextNode(textContent);
     this.domNodeToAxNodeIdMap_.set(textNode, nodeId);
-    const shouldBold = chrome.readAnything.shouldBold(nodeId);
-    const isOverline = chrome.readAnything.isOverline(nodeId);
+    const shouldBold = chrome.readingMode.shouldBold(nodeId);
+    const isOverline = chrome.readingMode.isOverline(nodeId);
 
     if (!shouldBold && !isOverline) {
       return textNode;
@@ -270,7 +270,7 @@
     // would create a shadow node element representing each AXNode, because
     // experimentation found the shadow node creation to be ~8-10x slower than
     // constructing and appending nodes directly to the container element.
-    const rootId = chrome.readAnything.rootId;
+    const rootId = chrome.readingMode.rootId;
     if (!rootId) {
       return;
     }
@@ -280,7 +280,7 @@
     // The empty state header tells the user to select text to distill. Some web
     // pages don't work with selection, so we show a different message.
     if (!node.textContent) {
-      if (chrome.readAnything.isSelectable()) {
+      if (chrome.readingMode.isSelectable()) {
         this.emptyStateHeading_ = loadTimeData.getString('emptyStateHeader');
       } else {
         this.emptyStateHeading_ = loadTimeData.getString('notSelectableHeader');
@@ -305,10 +305,10 @@
     selection.removeAllRanges();
 
     const range = new Range();
-    const startNodeId = chrome.readAnything.startNodeId;
-    const startOffset = chrome.readAnything.startOffset;
-    const endNodeId = chrome.readAnything.endNodeId;
-    const endOffset = chrome.readAnything.endOffset;
+    const startNodeId = chrome.readingMode.startNodeId;
+    const startOffset = chrome.readingMode.startOffset;
+    const endNodeId = chrome.readingMode.endNodeId;
+    const endOffset = chrome.readingMode.endOffset;
     const startNode = this.domNodeToAxNodeIdMap_.keyFrom(startNodeId);
     const endNode = this.domNodeToAxNodeIdMap_.keyFrom(endNodeId);
     if (!startNode || !endNode) {
@@ -333,7 +333,7 @@
   private validatedFontName_(): string {
     // Validate that the given font name is a valid choice, or use the default.
     const validFontName = this.validFontNames_.find(
-        (f: {name: string}) => f.name === chrome.readAnything.fontName);
+        (f: {name: string}) => f.name === chrome.readingMode.fontName);
     return validFontName ? validFontName.css : this.defaultFontName_;
   }
 
@@ -367,17 +367,17 @@
 
   updateTheme() {
     const foregroundColor:
-        SkColor = {value: chrome.readAnything.foregroundColor};
+        SkColor = {value: chrome.readingMode.foregroundColor};
     const backgroundColor:
-        SkColor = {value: chrome.readAnything.backgroundColor};
+        SkColor = {value: chrome.readingMode.backgroundColor};
     const linkColor = this.getLinkColor_(backgroundColor);
 
     this.updateStyles({
       '--font-family': this.validatedFontName_(),
-      '--font-size': chrome.readAnything.fontSize + 'em',
+      '--font-size': chrome.readingMode.fontSize + 'em',
       '--foreground-color': skColorToRgba(foregroundColor),
-      '--letter-spacing': chrome.readAnything.letterSpacing + 'em',
-      '--line-height': chrome.readAnything.lineSpacing,
+      '--letter-spacing': chrome.readingMode.letterSpacing + 'em',
+      '--line-height': chrome.readingMode.lineSpacing,
       '--link-color': linkColor.default,
       '--selection-color': this.getSelectionColor_(backgroundColor),
       '--sp-empty-state-heading-color': skColorToRgba(foregroundColor),
diff --git a/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts b/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts
index 47e3125..81140bf 100644
--- a/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts
+++ b/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-/** @fileoverview Definitions for chrome.readAnything API */
+/** @fileoverview Definitions for chrome.readingMode API */
 
 declare namespace chrome {
-  export namespace readAnything {
+  export namespace readingMode {
     /////////////////////////////////////////////////////////////////////
     // Implemented in read_anything_app_controller.cc and consumed by ts.
     /////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/safe_browsing/generated_safe_browsing_pref.cc b/chrome/browser/safe_browsing/generated_safe_browsing_pref.cc
index 9af589fd..db87110 100644
--- a/chrome/browser/safe_browsing/generated_safe_browsing_pref.cc
+++ b/chrome/browser/safe_browsing/generated_safe_browsing_pref.cc
@@ -184,9 +184,9 @@
         &pref_object, reporting_pref);
 
     pref_object.user_selectable_values.emplace();
-    pref_object.user_selectable_values->emplace_back(
+    pref_object.user_selectable_values->Append(
         base::to_underlying(SafeBrowsingSetting::STANDARD));
-    pref_object.user_selectable_values->emplace_back(
+    pref_object.user_selectable_values->Append(
         base::to_underlying(SafeBrowsingSetting::DISABLED));
   }
 }
diff --git a/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc b/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc
index 61e1fe1..a742d22 100644
--- a/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc
+++ b/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc
@@ -60,12 +60,17 @@
             safe_browsing::kTailoredSecurityUpdatedMessages)) {
       description = l10n_util::GetStringUTF16(
           IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION_UPDATED);
+      icon_resource_id =
+          ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SHIELD_BLUE);
+      // Need to disable tint here because it removes a shade of blue from the
+      // shield which distorts the image.
+      message_->DisableIconTint();
     } else {
       description = l10n_util::GetStringUTF16(
           IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION);
+      icon_resource_id =
+          ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SAFETY_CHECK);
     }
-    icon_resource_id =
-        ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SAFETY_CHECK);
   } else {
     title = l10n_util::GetStringUTF16(
         IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_TITLE);
@@ -73,12 +78,14 @@
             safe_browsing::kTailoredSecurityUpdatedMessages)) {
       description = l10n_util::GetStringUTF16(
           IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED);
+      icon_resource_id =
+          ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SHIELD_GRAY);
     } else {
       description = l10n_util::GetStringUTF16(
           IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION);
+      icon_resource_id =
+          ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SHIELD);
     }
-    icon_resource_id =
-        ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SHIELD);
     message_->DisableIconTint();
   }
   message_->SetTitle(title);
diff --git a/chrome/browser/safe_browsing/tailored_security/unconsented_message_android.cc b/chrome/browser/safe_browsing/tailored_security/unconsented_message_android.cc
index b3d9a98b..19e51a0 100644
--- a/chrome/browser/safe_browsing/tailored_security/unconsented_message_android.cc
+++ b/chrome/browser/safe_browsing/tailored_security/unconsented_message_android.cc
@@ -114,43 +114,52 @@
     }
   }
 
-  if (is_in_flow_) {
-    signin::IdentityManager* identity_manager =
-        IdentityManagerFactory::GetForProfile(
-            Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
-    if (identity_manager &&
-        identity_manager->HasPrimaryAccount(signin::ConsentLevel::kSignin)) {
-      gfx::ImageSkia avatar_image =
-          identity_manager
-              ->FindExtendedAccountInfoByAccountId(
-                  identity_manager->GetPrimaryAccountId(
-                      signin::ConsentLevel::kSignin))
-              .account_image.AsImageSkia();
-
-      gfx::ImageSkia sized_avatar_image =
-          gfx::ImageSkiaOperations::CreateResizedImage(
-              avatar_image, skia::ImageOperations::RESIZE_BEST,
-              gfx::Size(kAvatarSize, kAvatarSize));
-      gfx::ImageSkia cropped_avatar_image =
-          gfx::ImageSkiaOperations::CreateMaskedImage(
-              sized_avatar_image,
-              gfx::CanvasImageSource::MakeImageSkia<CircleImageSource>(
-                  sized_avatar_image.width(), SK_ColorWHITE));
-      gfx::ImageSkia final_avatar_image =
-          gfx::ImageSkiaOperations::CreateSuperimposedImage(
-              gfx::CanvasImageSource::MakeImageSkia<CircleImageSource>(
-                  kAvatarWithBorderSize, gfx::kGoogleBlue400),
-              cropped_avatar_image);
-      gfx::ImageSkia badge = gfx::CreateVectorIcon(kSafetyCheckIcon, kBadgeSize,
-                                                   gfx::kGoogleBlue500);
-      icon_ = gfx::ImageSkiaOperations::CreateIconWithBadge(final_avatar_image,
-                                                            badge);
-      message_->SetIcon(*icon_.bitmap());
-      message_->DisableIconTint();
-    }
-  } else {
+  if (base::FeatureList::IsEnabled(
+          safe_browsing::kTailoredSecurityUpdatedMessages)) {
     message_->SetIconResourceId(
-        ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SAFETY_CHECK));
+        ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SHIELD_BLUE));
+    // Need to disable tint here because it removes a shade of blue from the
+    // shield which distorts the image.
+    message_->DisableIconTint();
+  } else {
+    if (is_in_flow_) {
+      signin::IdentityManager* identity_manager =
+          IdentityManagerFactory::GetForProfile(
+              Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
+      if (identity_manager &&
+          identity_manager->HasPrimaryAccount(signin::ConsentLevel::kSignin)) {
+        gfx::ImageSkia avatar_image =
+            identity_manager
+                ->FindExtendedAccountInfoByAccountId(
+                    identity_manager->GetPrimaryAccountId(
+                        signin::ConsentLevel::kSignin))
+                .account_image.AsImageSkia();
+
+        gfx::ImageSkia sized_avatar_image =
+            gfx::ImageSkiaOperations::CreateResizedImage(
+                avatar_image, skia::ImageOperations::RESIZE_BEST,
+                gfx::Size(kAvatarSize, kAvatarSize));
+        gfx::ImageSkia cropped_avatar_image =
+            gfx::ImageSkiaOperations::CreateMaskedImage(
+                sized_avatar_image,
+                gfx::CanvasImageSource::MakeImageSkia<CircleImageSource>(
+                    sized_avatar_image.width(), SK_ColorWHITE));
+        gfx::ImageSkia final_avatar_image =
+            gfx::ImageSkiaOperations::CreateSuperimposedImage(
+                gfx::CanvasImageSource::MakeImageSkia<CircleImageSource>(
+                    kAvatarWithBorderSize, gfx::kGoogleBlue400),
+                cropped_avatar_image);
+        gfx::ImageSkia badge = gfx::CreateVectorIcon(
+            kSafetyCheckIcon, kBadgeSize, gfx::kGoogleBlue500);
+        icon_ = gfx::ImageSkiaOperations::CreateIconWithBadge(
+            final_avatar_image, badge);
+        message_->SetIcon(*icon_.bitmap());
+        message_->DisableIconTint();
+      }
+    } else {
+      message_->SetIconResourceId(ResourceMapper::MapToJavaDrawableId(
+          IDR_ANDROID_MESSAGE_SAFETY_CHECK));
+    }
   }
 
   LogMessageOutcome(TailoredSecurityOutcome::kShown, is_in_flow_);
diff --git a/chrome/browser/screen_ai/screen_ai_install_state.cc b/chrome/browser/screen_ai/screen_ai_install_state.cc
index 3dcfd97..19d29f3 100644
--- a/chrome/browser/screen_ai/screen_ai_install_state.cc
+++ b/chrome/browser/screen_ai/screen_ai_install_state.cc
@@ -162,10 +162,6 @@
 }
 
 bool ScreenAIInstallState::IsComponentAvailable() {
-  // Make sure the library becomes available only when it's needed.
-  CHECK(get_component_binary_path().empty() ||
-        features::IsScreenAIServiceNeeded());
-
   return !get_component_binary_path().empty();
 }
 
diff --git a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
index 770dbae..2c7b2b7 100644
--- a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
+++ b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
@@ -277,7 +277,7 @@
   TRACE_EVENT0("sharing", "RemoteCopyMessageHandler::ShowNotification");
 
   message_center::RichNotificationData rich_notification_data;
-  rich_notification_data.vector_small_image = &kLaptopAndSmartphoneIcon;
+  rich_notification_data.vector_small_image = &kDevicesIcon;
   rich_notification_data.renotify = true;
 
   ui::Accelerator paste_accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR);
diff --git a/chrome/browser/sharing_hub/sharing_hub_model.cc b/chrome/browser/sharing_hub/sharing_hub_model.cc
index 806908b..f3725c7 100644
--- a/chrome/browser/sharing_hub/sharing_hub_model.cc
+++ b/chrome/browser/sharing_hub/sharing_hub_model.cc
@@ -115,7 +115,7 @@
 
   first_party_action_list_.emplace_back(
       IDC_SEND_TAB_TO_SELF, l10n_util::GetStringUTF16(IDS_SEND_TAB_TO_SELF),
-      &kLaptopAndSmartphoneIcon, "SharingHubDesktop.SendTabToSelfSelected", 0);
+      &kDevicesIcon, "SharingHubDesktop.SendTabToSelfSelected", 0);
 
   first_party_action_list_.emplace_back(
       IDC_QRCODE_GENERATOR,
diff --git a/chrome/browser/ssl/ssl_config_service_manager.cc b/chrome/browser/ssl/ssl_config_service_manager.cc
index 682a006..6b92472 100644
--- a/chrome/browser/ssl/ssl_config_service_manager.cc
+++ b/chrome/browser/ssl/ssl_config_service_manager.cc
@@ -143,6 +143,9 @@
                     local_state_callback);
   insecure_hash_enabled_.Init(prefs::kInsecureHashesInTLSHandshakesEnabled,
                               local_state, local_state_callback);
+  rsa_key_usage_for_local_anchors_enabled_.Init(
+      prefs::kRSAKeyUsageForLocalAnchorsEnabled, local_state,
+      local_state_callback);
 
   local_state_change_registrar_.Init(local_state);
   local_state_change_registrar_.Add(prefs::kCipherSuiteBlacklist,
@@ -175,10 +178,13 @@
                                 default_context_config.post_quantum_enabled);
   registry->RegisterBooleanPref(prefs::kEncryptedClientHelloEnabled,
                                 default_context_config.ech_enabled);
-  // Default value for this pref doesn't matter since it is only used when
+
+  // Default value for these prefs don't matter since they are only used when
   // managed.
   registry->RegisterBooleanPref(prefs::kInsecureHashesInTLSHandshakesEnabled,
                                 false);
+  registry->RegisterBooleanPref(prefs::kRSAKeyUsageForLocalAnchorsEnabled,
+                                false);
 }
 
 void SSLConfigServiceManager::AddToNetworkContextParams(
@@ -256,6 +262,16 @@
     config->insecure_hash_override = network::mojom::OptionalBool::kUnset;
   }
 
+  if (rsa_key_usage_for_local_anchors_enabled_.IsManaged()) {
+    config->rsa_key_usage_for_local_anchors_override =
+        rsa_key_usage_for_local_anchors_enabled_.GetValue()
+            ? network::mojom::OptionalBool::kTrue
+            : network::mojom::OptionalBool::kFalse;
+  } else {
+    config->rsa_key_usage_for_local_anchors_override =
+        network::mojom::OptionalBool::kUnset;
+  }
+
   return config;
 }
 
diff --git a/chrome/browser/ssl/ssl_config_service_manager.h b/chrome/browser/ssl/ssl_config_service_manager.h
index bcf2815..ab39800 100644
--- a/chrome/browser/ssl/ssl_config_service_manager.h
+++ b/chrome/browser/ssl/ssl_config_service_manager.h
@@ -68,6 +68,7 @@
   BooleanPrefMember post_quantum_enabled_;
   BooleanPrefMember ech_enabled_;
   BooleanPrefMember insecure_hash_enabled_;
+  BooleanPrefMember rsa_key_usage_for_local_anchors_enabled_;
 
   // The cached list of disabled SSL cipher suites.
   std::vector<uint16_t> disabled_cipher_suites_;
diff --git a/chrome/browser/subresource_filter/ad_tagging_browsertest.cc b/chrome/browser/subresource_filter/ad_tagging_browsertest.cc
index 117c33d..03947db4 100644
--- a/chrome/browser/subresource_filter/ad_tagging_browsertest.cc
+++ b/chrome/browser/subresource_filter/ad_tagging_browsertest.cc
@@ -805,6 +805,7 @@
       blink::mojom::FrameCreationStackEvidence::kNotCreatedByAdScript));
 
   NavigateFrame(test_frame, GetURL("frame_factory.html"));
+  test_frame = content::ChildFrameAt(web_contents()->GetPrimaryMainFrame(), 0);
   EXPECT_FALSE(observer.GetIsAdFrame(test_frame->GetFrameTreeNodeId()));
   EXPECT_TRUE(EvidenceForFrameComprises(
       test_frame, /*parent_is_ad=*/false,
@@ -815,6 +816,7 @@
       blink::mojom::FrameCreationStackEvidence::kNotCreatedByAdScript));
 
   NavigateFrame(test_frame, GetURL("frame_factory.html?allowed=true"));
+  test_frame = content::ChildFrameAt(web_contents()->GetPrimaryMainFrame(), 0);
   EXPECT_FALSE(observer.GetIsAdFrame(test_frame->GetFrameTreeNodeId()));
   EXPECT_TRUE(EvidenceForFrameComprises(
       test_frame, /*parent_is_ad=*/false,
@@ -825,6 +827,7 @@
       blink::mojom::FrameCreationStackEvidence::kNotCreatedByAdScript));
 
   NavigateFrame(test_frame, GetURL("frame_factory.html?ad=true"));
+  test_frame = content::ChildFrameAt(web_contents()->GetPrimaryMainFrame(), 0);
   EXPECT_TRUE(observer.GetIsAdFrame(test_frame->GetFrameTreeNodeId()));
   EXPECT_TRUE(EvidenceForFrameComprises(
       test_frame, /*parent_is_ad=*/false,
@@ -835,6 +838,7 @@
       blink::mojom::FrameCreationStackEvidence::kNotCreatedByAdScript));
 
   NavigateFrame(test_frame, GetURL("frame_factory.html"));
+  test_frame = content::ChildFrameAt(web_contents()->GetPrimaryMainFrame(), 0);
   EXPECT_TRUE(observer.GetIsAdFrame(test_frame->GetFrameTreeNodeId()));
   EXPECT_TRUE(EvidenceForFrameComprises(
       test_frame, /*parent_is_ad=*/false,
diff --git a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
index a14bfe83..9829a294 100644
--- a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
@@ -1367,9 +1367,9 @@
   const GURL kSameOriginEmbedUrl(
       embedded_test_server()->GetURL(kMainFrameOrigin, "/title1.html"));
 
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kMainFrameUrl));
   content::RenderFrameHost* render_frame_host =
-      ui_test_utils::NavigateToURL(browser(), kMainFrameUrl);
-  ASSERT_TRUE(render_frame_host);
+      web_contents()->GetPrimaryMainFrame();
 
   InitTestPage(render_frame_host);
 
@@ -1403,6 +1403,7 @@
   // LazyEmbeds and LazyAds must be disabled when the page is reloaded.
   EXPECT_TRUE(render_frame_host->Reload());
   EXPECT_TRUE(content::WaitForLoadStop(web_contents()));
+  render_frame_host = web_contents()->GetPrimaryMainFrame();
   InitTestPage(render_frame_host);
   AddAdIframe(render_frame_host, kAdUrl);
   AddIframe(render_frame_host, kEmbedUrl);
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index bd2941b..1ab3276 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -289,8 +289,12 @@
     "tab_modal_confirm_dialog.h",
     "tab_ui_helper.cc",
     "tab_ui_helper.h",
+    "toolbar/chrome_labs_model.cc",
+    "toolbar/chrome_labs_model.h",
     "toolbar/chrome_labs_prefs.cc",
     "toolbar/chrome_labs_prefs.h",
+    "toolbar/chrome_labs_utils.cc",
+    "toolbar/chrome_labs_utils.h",
     "toolbar/chrome_location_bar_model_delegate.cc",
     "toolbar/chrome_location_bar_model_delegate.h",
     "translate/partial_translate_bubble_model.h",
@@ -1540,8 +1544,6 @@
       "uma_browsing_activity_observer.h",
       "unload_controller.cc",
       "unload_controller.h",
-      "user_education/active_tab_tracker.cc",
-      "user_education/active_tab_tracker.h",
       "user_education/browser_feature_promo_snooze_service.cc",
       "user_education/browser_feature_promo_snooze_service.h",
       "user_education/browser_tutorial_service.cc",
@@ -1800,7 +1802,8 @@
       "webui/side_panel/companion/companion_page_handler.h",
       "webui/side_panel/companion/companion_side_panel_untrusted_ui.cc",
       "webui/side_panel/companion/companion_side_panel_untrusted_ui.h",
-      "webui/side_panel/companion/signin_delegate.cc",
+      "webui/side_panel/companion/signin_delegate_impl.cc",
+      "webui/side_panel/companion/signin_delegate_impl.h",
       "webui/side_panel/customize_chrome/customize_chrome_colors.cc",
       "webui/side_panel/customize_chrome/customize_chrome_colors.h",
       "webui/side_panel/customize_chrome/customize_chrome_page_handler.cc",
@@ -5466,10 +5469,6 @@
       "views/toolbar/chrome_labs_coordinator.h",
       "views/toolbar/chrome_labs_item_view.cc",
       "views/toolbar/chrome_labs_item_view.h",
-      "views/toolbar/chrome_labs_model.cc",
-      "views/toolbar/chrome_labs_model.h",
-      "views/toolbar/chrome_labs_utils.cc",
-      "views/toolbar/chrome_labs_utils.h",
       "views/toolbar/chrome_labs_view_controller.cc",
       "views/toolbar/chrome_labs_view_controller.h",
       "views/toolbar/home_button.cc",
@@ -5513,8 +5512,6 @@
       "views/user_education/browser_feature_promo_controller.h",
       "views/user_education/browser_user_education_service.cc",
       "views/user_education/browser_user_education_service.h",
-      "views/user_education/tip_marquee_view.cc",
-      "views/user_education/tip_marquee_view.h",
       "views/web_apps/file_handler_launch_dialog_view.cc",
       "views/web_apps/file_handler_launch_dialog_view.h",
       "views/web_apps/frame_toolbar/system_app_accessible_name.cc",
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index dc89261..22371bb0 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -4050,12 +4050,6 @@
         Incognito mode
       </message>
 
-      <message name="IDS_TABSWITCHER_NO_TABS_EMPTY_STATE" desc="Text appearing on an empty tab switcher that indicates that tabs opened will appear here.">
-        You’ll find your tabs here
-      </message>
-      <message name="IDS_TABSWITCHER_NO_TABS_OPEN_TO_VISIT_DIFFERENT_PAGES" desc="Text appearing on an empty tab switcher that indicates that users can open tabs here to visit different pages.">
-        Open tabs to visit different pages at the same time
-      </message>
       <message name="IDS_ACCESSIBILITY_TOOLBAR_BTN_TABSWITCHER_TOGGLE_DEFAULT" desc="Placeholder content description for the button that enters or leaves the tab switcher.">
         Switch or close tabs
       </message>
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_TABSWITCHER_NO_TABS_EMPTY_STATE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_TABSWITCHER_NO_TABS_EMPTY_STATE.png.sha1
deleted file mode 100644
index 2b70fb4..0000000
--- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_TABSWITCHER_NO_TABS_EMPTY_STATE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-41ca5b064f646b79720ff99dbfff8cac553a98ab
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_TABSWITCHER_NO_TABS_OPEN_TO_VISIT_DIFFERENT_PAGES.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_TABSWITCHER_NO_TABS_OPEN_TO_VISIT_DIFFERENT_PAGES.png.sha1
deleted file mode 100644
index 2b70fb4..0000000
--- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_TABSWITCHER_NO_TABS_OPEN_TO_VISIT_DIFFERENT_PAGES.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-41ca5b064f646b79720ff99dbfff8cac553a98ab
\ No newline at end of file
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
index 0a54c72..ecc029b 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -2760,8 +2760,11 @@
         if (!mShouldShowModernizeVisualUpdate) {
             return;
         }
+
         mDropdownListScrolled = true;
-        mLocationBar.setStatusIconBackgroundVisibility(true);
+        if (!OmniboxFeatures.shouldShowActiveColorOnOmnibox()) {
+            mLocationBar.setStatusIconBackgroundVisibility(true);
+        }
         updateToolbarAndLocationBarColor();
     }
 
@@ -2770,8 +2773,11 @@
         if (!mShouldShowModernizeVisualUpdate) {
             return;
         }
+
         mDropdownListScrolled = false;
-        mLocationBar.setStatusIconBackgroundVisibility(false);
+        if (!OmniboxFeatures.shouldShowActiveColorOnOmnibox()) {
+            mLocationBar.setStatusIconBackgroundVisibility(false);
+        }
         updateToolbarAndLocationBarColor();
     }
 
diff --git a/chrome/browser/ui/ash/sharesheet/sharesheet_header_view.cc b/chrome/browser/ui/ash/sharesheet/sharesheet_header_view.cc
index 9e3eab4..4be37ec9 100644
--- a/chrome/browser/ui/ash/sharesheet/sharesheet_header_view.cc
+++ b/chrome/browser/ui/ash/sharesheet/sharesheet_header_view.cc
@@ -440,7 +440,7 @@
     case (TextPlaceholderIcon::kGenericText):
       return chromeos::kTextIcon;
     case (TextPlaceholderIcon::kLink):
-      return kSharesheetLinkIcon;
+      return kLinkIcon;
   }
 }
 
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 16e3819..c1f28eb 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -788,6 +788,9 @@
                                         SidePanelOpenTrigger::kAppMenu);
       break;
 #endif
+    case IDC_SHOW_CHROME_LABS:
+      window()->ShowChromeLabs();
+      break;
     case IDC_SHOW_BOOKMARK_BAR:
       ToggleBookmarkBar(browser_);
       break;
@@ -1328,6 +1331,9 @@
       command_updater_.UpdateCommandEnabled(IDC_READING_LIST_MENU_SHOW_UI,
                                             true);
     }
+    if (base::FeatureList::IsEnabled(features::kChromeLabs)) {
+      command_updater_.UpdateCommandEnabled(IDC_SHOW_CHROME_LABS, true);
+    }
   }
 
   // Initialize other commands whose state changes based on various conditions.
diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h
index fbb6ed97..9786d3e 100644
--- a/chrome/browser/ui/browser_window.h
+++ b/chrome/browser/ui/browser_window.h
@@ -646,6 +646,9 @@
       absl::optional<SidePanelEntryId> entry_id = absl::nullopt,
       absl::optional<SidePanelOpenTrigger> open_trigger = absl::nullopt) = 0;
 
+  // Shows the Chrome Labs bubble if enabled.
+  virtual void ShowChromeLabs() = 0;
+
  protected:
   friend class BrowserCloseManager;
   friend class BrowserView;
diff --git a/chrome/browser/ui/layout_constants.cc b/chrome/browser/ui/layout_constants.cc
index a51a95fb..b7e16be 100644
--- a/chrome/browser/ui/layout_constants.cc
+++ b/chrome/browser/ui/layout_constants.cc
@@ -14,10 +14,6 @@
 #include "ui/base/ui_base_features.h"
 #include "ui/gfx/geometry/insets.h"
 
-#if BUILDFLAG(IS_CHROMEOS)
-#include "chromeos/constants/chromeos_features.h"
-#endif  // IS_CHROMEOS
-
 int GetLayoutConstant(LayoutConstant constant) {
   const bool touch_ui = ui::TouchUiController::Get()->touch_ui();
   switch (constant) {
@@ -77,11 +73,6 @@
     case TAB_ALERT_INDICATOR_ICON_WIDTH:
       return touch_ui ? 12 : 16;
     case TAB_HEIGHT:
-#if BUILDFLAG(IS_CHROMEOS)
-      if (chromeos::features::IsJellyrollEnabled()) {
-        return 34 + GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP);
-      }
-#endif  // IS_CHROMEOS
       return (touch_ui ? 41 : 34) + GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP);
     case TAB_PRE_TITLE_PADDING:
       return 8;
diff --git a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
index 97869d8..950aa5b 100644
--- a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
+++ b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
@@ -482,6 +482,8 @@
       case PasswordGenerationVariation::kConvenience:
         return l10n_util::GetStringUTF16(
             IDS_PASSWORD_GENERATION_SUGGESTION_CONVENIENCE);
+      default:
+        break;
     }
   }
 #endif  // !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc b/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc
index 541ee0f..c2aff5e9 100644
--- a/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc
+++ b/chrome/browser/ui/passwords/password_generation_popup_view_browsertest.cc
@@ -513,6 +513,7 @@
                          testing::Values("trusted_advice",
                                          "safety_first",
                                          "try_something_new",
-                                         "convenience"));
+                                         "convenience",
+                                         "cross_device"));
 
 }  // namespace autofill
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h
index c19edfd..6b1ea2e 100644
--- a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h
+++ b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h
@@ -42,9 +42,9 @@
   virtual void DisconnectLocalTabGroup(
       const tab_groups::TabGroupId& group_id) = 0;
 
-  // Begins listening to the Tab Group in the TabStrip. Adds the local tab group
-  // id and web content tokens.
-  virtual void ConnectLocalTabGroup(
+  // Begins listening to the Tab Group in the TabStrip if a local to saved group
+  // connection can be made. Adds the local tab group id and web content tokens.
+  virtual void ConnectLocalTabGroupIfPossible(
       const tab_groups::TabGroupId& local_group_id,
       const base::Uuid& saved_group_guid) = 0;
 };
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.cc b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.cc
index 0e672c1..d66680d 100644
--- a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.cc
+++ b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.cc
@@ -90,8 +90,7 @@
   // crashed session / window. This means we will have to manually trigger the
   // local to saved group linking.
   if (model()->is_loaded()) {
-    model_.OnGroupOpenedInTabStrip(saved_guid, local_group_id);
-    ConnectLocalTabGroup(local_group_id, saved_guid);
+    ConnectLocalTabGroupIfPossible(local_group_id, saved_guid);
   } else {
     saved_guid_to_local_group_id_mapping_.emplace_back(saved_guid,
                                                        local_group_id);
@@ -265,7 +264,7 @@
   model_.OnGroupClosedInTabStrip(group_id);
 }
 
-void SavedTabGroupKeyedService::ConnectLocalTabGroup(
+void SavedTabGroupKeyedService::ConnectLocalTabGroupIfPossible(
     const tab_groups::TabGroupId& local_group_id,
     const base::Uuid& saved_guid) {
   const TabStripModel* tab_strip_model =
@@ -277,16 +276,21 @@
   const gfx::Range& tab_range = tab_group->ListTabs();
   const SavedTabGroup* const saved_group = model_.Get(saved_guid);
   CHECK(saved_group);
-  CHECK(tab_range.length() == saved_group->saved_tabs().size());
+
+  if (tab_range.length() != saved_group->saved_tabs().size()) {
+    return;
+  }
 
   std::vector<std::pair<content::WebContents*, base::Uuid>>
       web_contents_to_guid_mapping;
 
-  for (size_t i = tab_range.start(); i < tab_range.end(); ++i) {
-    content::WebContents* web_contents = tab_strip_model->GetWebContentsAt(i);
+  for (size_t index_in_tabstrip = tab_range.start();
+       index_in_tabstrip < tab_range.end(); ++index_in_tabstrip) {
+    content::WebContents* web_contents =
+        tab_strip_model->GetWebContentsAt(index_in_tabstrip);
     CHECK(web_contents);
 
-    const size_t saved_tab_index = i - tab_range.start();
+    const int saved_tab_index = index_in_tabstrip - tab_range.start();
     const SavedTabGroupTab& saved_tab =
         saved_group->saved_tabs()[saved_tab_index];
 
@@ -294,6 +298,7 @@
                                               saved_tab.saved_tab_guid());
   }
 
+  model_.OnGroupOpenedInTabStrip(saved_guid, local_group_id);
   listener_.ConnectToLocalTabGroup(*model_.Get(saved_guid),
                                    std::move(web_contents_to_guid_mapping));
 
@@ -307,8 +312,7 @@
       continue;
     }
 
-    model_.OnGroupOpenedInTabStrip(saved_guid, local_group_id);
-    ConnectLocalTabGroup(local_group_id, saved_guid);
+    ConnectLocalTabGroupIfPossible(local_group_id, saved_guid);
   }
 
   // Clear `saved_guid_to_local_group_id_mapping_` to save space when finished.
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h
index bf71931..3d6a19e 100644
--- a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h
+++ b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h
@@ -50,8 +50,9 @@
       const base::Uuid& saved_group_guid,
       const tab_groups::TabGroupId& group_id) override;
   void DisconnectLocalTabGroup(const tab_groups::TabGroupId& group_id) override;
-  void ConnectLocalTabGroup(const tab_groups::TabGroupId& group_id,
-                            const base::Uuid& saved_group_guid) override;
+  void ConnectLocalTabGroupIfPossible(
+      const tab_groups::TabGroupId& group_id,
+      const base::Uuid& saved_group_guid) override;
 
   // SavedTabGroupModelObserver
   void SavedTabGroupModelLoaded() override;
diff --git a/chrome/browser/ui/tabs/tab_menu_model.cc b/chrome/browser/ui/tabs/tab_menu_model.cc
index 56692985..e0da843 100644
--- a/chrome/browser/ui/tabs/tab_menu_model.cc
+++ b/chrome/browser/ui/tabs/tab_menu_model.cc
@@ -157,7 +157,7 @@
 #else
     AddItemWithIcon(TabStripModel::CommandSendTabToSelf,
                     l10n_util::GetStringUTF16(IDS_MENU_SEND_TAB_TO_SELF),
-                    ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon));
+                    ui::ImageModel::FromVectorIcon(kDevicesIcon));
 #endif
   }
 
diff --git a/chrome/browser/ui/test/test_browser_dialog.cc b/chrome/browser/ui/test/test_browser_dialog.cc
index 0e3f611a..6c2b39b 100644
--- a/chrome/browser/ui/test/test_browser_dialog.cc
+++ b/chrome/browser/ui/test/test_browser_dialog.cc
@@ -27,7 +27,6 @@
 #if defined(TOOLKIT_VIEWS)
 #include "base/functional/callback_helpers.h"
 #include "base/strings/strcat.h"
-#include "ui/base/ui_base_features.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
 #include "ui/views/test/widget_test.h"
@@ -116,10 +115,6 @@
   }
 
   views::Widget* dialog_widget = *(added.begin());
-// TODO(https://crbug.com/958242) support Mac for pixel tests.
-// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
-// of lacros-chrome is complete.
-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
   dialog_widget->SetBlockCloseForTesting(true);
   // Deactivate before taking screenshot. Deactivated dialog pixel outputs
   // is more predictable than activated dialog.
@@ -134,21 +129,13 @@
   const std::string screenshot_name = base::StrCat(
       {test_info->test_case_name(), "_", test_info->name(), "_", baseline_});
 
-  // For the CR2023 screenshots add a "CR2023" prefix so that they are compared
-  // exclusively with previous CR2023 screenshots. We would like Skia Gold to
-  // catch regressions in both CR2023 and non-CR2023.
-  // TODO(crbug.com/1444466): remove this after CR2023 launch.
-  const std::string screenshot_prefix = features::IsChromeRefresh2023()
-                                            ? "CR2023_BrowserUiDialog"
-                                            : "BrowserUiDialog";
-
-  if (!VerifyPixelUi(dialog_widget, screenshot_prefix, screenshot_name)) {
+  if (VerifyPixelUi(dialog_widget, "BrowserUiDialog", screenshot_name) ==
+      ui::test::ActionResult::kFailed) {
     LOG(INFO) << "VerifyUi(): Pixel compare failed.";
     return false;
   }
   if (is_active)
     dialog_widget->Activate();
-#endif  // BUILDFLAG(IS_MAC)
 
   if (!should_verify_dialog_bounds_)
     return true;
diff --git a/chrome/browser/ui/test/test_browser_ui.cc b/chrome/browser/ui/test/test_browser_ui.cc
index 16bcef0..21e248d 100644
--- a/chrome/browser/ui/test/test_browser_ui.cc
+++ b/chrome/browser/ui/test/test_browser_ui.cc
@@ -9,6 +9,7 @@
 #include "base/test/test_switches.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
+#include "ui/base/ui_base_features.h"
 #include "ui/base/ui_base_switches.h"
 
 #if defined(USE_AURA)
@@ -30,6 +31,13 @@
 #include "ui/views/widget/widget.h"
 #endif
 
+// TODO(https://crbug.com/958242) support Mac for pixel tests.
+// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+// of lacros-chrome is complete.
+#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+#define SUPPORTS_PIXEL_TEST
+#endif
+
 namespace {
 
 // Extracts the |name| argument for ShowUi() from the current test case name.
@@ -75,8 +83,7 @@
   SetPixelMatchAlgorithm(
       std::make_unique<ui::test::FuzzySkiaGoldMatchingAlgorithm>(
           /*max_different_pixels=*/1000, /*pixel_delta_threshold=*/255 * 3));
-#elif BUILDFLAG(IS_WIN) || \
-    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+#elif defined(SUPPORTS_PIXEL_TEST)
   // Default to fuzzy diff. The magic number is chosen based on
   // past experiments.
   SetPixelMatchAlgorithm(
@@ -86,23 +93,22 @@
 
 TestBrowserUi::~TestBrowserUi() = default;
 
-// TODO(https://crbug.com/958242) support Mac for pixel tests.
-// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
-// of lacros-chrome is complete.
-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
-bool TestBrowserUi::VerifyPixelUi(views::Widget* widget,
-                                  const std::string& screenshot_prefix,
-                                  const std::string& screenshot_name) {
+ui::test::ActionResult TestBrowserUi::VerifyPixelUi(
+    views::Widget* widget,
+    const std::string& screenshot_prefix,
+    const std::string& screenshot_name) {
   return VerifyPixelUi(widget->GetContentsView(), screenshot_prefix,
                        screenshot_name);
 }
 
-bool TestBrowserUi::VerifyPixelUi(views::View* view,
-                                  const std::string& screenshot_prefix,
-                                  const std::string& screenshot_name) {
+ui::test::ActionResult TestBrowserUi::VerifyPixelUi(
+    views::View* view,
+    const std::string& screenshot_prefix,
+    const std::string& screenshot_name) {
+#ifdef SUPPORTS_PIXEL_TEST
   if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
           "browser-ui-tests-verify-pixels"))
-    return true;
+    return ui::test::ActionResult::kNotAttempted;
 
   // Disable and hide cursor to prvent any interference with the
   // screenshots.
@@ -120,23 +126,34 @@
   ui::DrawWaiterForTest::WaitForCompositingEnded(compositor);
 
   views::ViewSkiaGoldPixelDiff pixel_diff;
-  pixel_diff.Init(screenshot_prefix);
-  return pixel_diff.CompareViewScreenshot(screenshot_name, view,
-                                          GetPixelMatchAlgorithm());
+  pixel_diff.Init(
+      // For the CR2023 screenshots add a "CR2023" prefix so that they are
+      // compared exclusively with previous CR2023 screenshots. We would like
+      // Skia Gold to catch regressions in both CR2023 and non-CR2023.
+      // TODO(crbug.com/1444466): remove this after CR2023 launch.
+      features::IsChromeRefresh2023() ? "CR2023_" + screenshot_prefix
+                                      : screenshot_prefix);
+  bool success = pixel_diff.CompareViewScreenshot(screenshot_name, view,
+                                                  GetPixelMatchAlgorithm());
+  return success ? ui::test::ActionResult::kSucceeded
+                 : ui::test::ActionResult::kFailed;
+#else
+  return ui::test::ActionResult::kKnownIncompatible;
+#endif
 }
 
 void TestBrowserUi::SetPixelMatchAlgorithm(
     std::unique_ptr<ui::test::SkiaGoldMatchingAlgorithm> algorithm) {
   algorithm_ = std::move(algorithm);
 }
-#endif
 
 void TestBrowserUi::ShowAndVerifyUi() {
   PreShow();
 #if BUILDFLAG(IS_WIN)
   // Gold files for pixel tests are for light mode, so if dark mode is not
   // forced, and host is in dark mode, skip test.
-  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+  if (!IsInteractiveUi() &&
+      !base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kForceDarkMode) &&
       ui::NativeTheme::GetInstanceForNativeUi()->ShouldUseDarkColors()) {
     GTEST_SKIP() << "Host is in dark mode; skipping test";
diff --git a/chrome/browser/ui/test/test_browser_ui.h b/chrome/browser/ui/test/test_browser_ui.h
index 2619dbb4..ed3bd07 100644
--- a/chrome/browser/ui/test/test_browser_ui.h
+++ b/chrome/browser/ui/test/test_browser_ui.h
@@ -11,18 +11,14 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "ui/base/interaction/interaction_test_util.h"
+#include "ui/base/test/skia_gold_matching_algorithm.h"
 
 namespace views {
 class Widget;
 class View;
 }  // namespace views
 
-namespace ui {
-namespace test {
-class SkiaGoldMatchingAlgorithm;
-}  // namespace test
-}  // namespace ui
-
 // TestBrowserUi provides a way to register an InProcessBrowserTest testing
 // harness with a framework that invokes Chrome browser UI in a consistent way.
 // It optionally provides a way to invoke UI "interactively". This allows
@@ -97,18 +93,17 @@
   // successfully shown.
   virtual bool VerifyUi() = 0;
 
-// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
-// of lacros-chrome is complete.
-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
-  // Can be called by VerifyUi() to ensure pixel correctness.
-  bool VerifyPixelUi(views::Widget* widget,
-                     const std::string& screenshot_prefix,
-                     const std::string& screenshot_name);
+  // Returns ActionResult::Succeeded if the screenshot matches the golden image.
+  // Returns ActionResult::kFailed if the matching fails.
+  // Returns ActionResult::kKnownIncompatible if pixel tests are unsupported.
+  ui::test::ActionResult VerifyPixelUi(views::Widget* widget,
+                                       const std::string& screenshot_prefix,
+                                       const std::string& screenshot_name);
 
   // Can be called by VerifyUi() to ensure pixel correctness.
-  bool VerifyPixelUi(views::View* view,
-                     const std::string& screenshot_prefix,
-                     const std::string& screenshot_name);
+  ui::test::ActionResult VerifyPixelUi(views::View* view,
+                                       const std::string& screenshot_prefix,
+                                       const std::string& screenshot_name);
 
   // Own |algorithm|.
   void SetPixelMatchAlgorithm(
@@ -116,7 +111,6 @@
   ui::test::SkiaGoldMatchingAlgorithm* GetPixelMatchAlgorithm() {
     return algorithm_.get();
   }
-#endif
 
   // Called by ShowAndVerifyUi() after VerifyUi(), in the case where the test is
   // interactive.  This should block until the UI has been dismissed.
@@ -137,12 +131,7 @@
   bool IsInteractiveUi() const;
 
  private:
-// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
-// of lacros-chrome is complete.
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \
-    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
   std::unique_ptr<ui::test::SkiaGoldMatchingAlgorithm> algorithm_;
-#endif
 };
 
 // Helper to mix in a TestBrowserUi to an existing test harness. |Base| must be
diff --git a/chrome/browser/ui/toolbar/OWNERS b/chrome/browser/ui/toolbar/OWNERS
index ee2739b..f7e3c0f 100644
--- a/chrome/browser/ui/toolbar/OWNERS
+++ b/chrome/browser/ui/toolbar/OWNERS
@@ -2,6 +2,7 @@
 per-file browser_actions_bar_browsertest*=rdevlin.cronin@chromium.org
 per-file *toolbar_action*=rdevlin.cronin@chromium.org
 per-file *toolbar_action*=emiliapaz@chromium.org
+per-file chrome_labs*=elainechien@chromium.org
 
 # Media Router Action Files
 per-file *media_router*=file://chrome/browser/media/router/OWNERS
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc
index 295a934..e5205eb6 100644
--- a/chrome/browser/ui/toolbar/app_menu_model.cc
+++ b/chrome/browser/ui/toolbar/app_menu_model.cc
@@ -43,6 +43,8 @@
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/toolbar/app_menu_icon_controller.h"
 #include "chrome/browser/ui/toolbar/bookmark_sub_menu_model.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/web_applications/web_app_launch_utils.h"
@@ -66,6 +68,7 @@
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
 #include "components/performance_manager/public/features.h"
+#include "components/prefs/pref_member.h"
 #include "components/prefs/pref_service.h"
 #include "components/profile_metrics/browser_profile_type.h"
 #include "components/signin/public/base/signin_metrics.h"
@@ -122,6 +125,7 @@
 DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(AppMenuModel, kIncognitoMenuItem);
 DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(AppMenuModel, kPasswordManagerMenuItem);
 DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ToolsMenuModel, kPerformanceMenuItem);
+DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ToolsMenuModel, kChromeLabsMenuItem);
 DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ExtensionsMenuModel,
                                       kManageExtensionsMenuItem);
 DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ExtensionsMenuModel,
@@ -177,6 +181,17 @@
          url.DomainIs(password_manager::kChromeUIPasswordManagerHost);
 }
 
+void SetCommandIcon(ui::SimpleMenuModel* model,
+                    int command_id,
+                    const gfx::VectorIcon& vector_icon) {
+  auto index = model->GetIndexOfCommandId(command_id);
+  if (index) {
+    model->SetIcon(index.value(), ui::ImageModel::FromVectorIcon(
+                                      vector_icon, ui::kColorMenuIcon,
+                                      ui::SimpleMenuModel::kDefaultIconSize));
+  }
+}
+
 }  // namespace
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -225,18 +240,13 @@
 #endif
     AddItemWithStringId(IDC_ABOUT, IDS_ABOUT);
     if (features::IsChromeRefresh2023()) {
-      SetIcon(
-          GetIndexOfCommandId(IDC_ABOUT).value(),
-          ui::ImageModel::FromVectorIcon(vector_icons::kInfoRefreshIcon,
-                                         ui::kColorMenuIcon, kDefaultIconSize));
+      SetCommandIcon(this, IDC_ABOUT, vector_icons::kInfoRefreshIcon);
     }
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
     if (base::FeatureList::IsEnabled(features::kChromeWhatsNewUI)) {
       AddItemWithStringId(IDC_CHROME_WHATS_NEW, IDS_CHROME_WHATS_NEW);
       if (features::IsChromeRefresh2023()) {
-        SetIcon(GetIndexOfCommandId(IDC_CHROME_WHATS_NEW).value(),
-                ui::ImageModel::FromVectorIcon(
-                    kReleaseAlertIcon, ui::kColorMenuIcon, kDefaultIconSize));
+        SetCommandIcon(this, IDC_CHROME_WHATS_NEW, kReleaseAlertIcon);
       }
     }
 #endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
@@ -246,17 +256,13 @@
       SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE_VIA_MENU).value(),
               ui::ImageModel::FromImage(rb.GetNativeImageNamed(IDR_HELP_MENU)));
     } else if (features::IsChromeRefresh2023()) {
-      SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE_VIA_MENU).value(),
-              ui::ImageModel::FromVectorIcon(kHelpMenuIcon, ui::kColorMenuIcon,
-                                             kDefaultIconSize));
+      SetCommandIcon(this, IDC_HELP_PAGE_VIA_MENU, kHelpMenuIcon);
     }
     if (browser->profile()->GetPrefs()->GetBoolean(
             prefs::kUserFeedbackAllowed)) {
       AddItemWithStringId(IDC_FEEDBACK, IDS_FEEDBACK);
       if (features::IsChromeRefresh2023()) {
-        SetIcon(GetIndexOfCommandId(IDC_FEEDBACK).value(),
-                ui::ImageModel::FromVectorIcon(kReportIcon, ui::kColorMenuIcon,
-                                               kDefaultIconSize));
+        SetCommandIcon(this, IDC_FEEDBACK, kReportIcon);
       }
     }
   }
@@ -279,18 +285,22 @@
 // - Developer tools.
 // - Option to enable profiling.
 void ToolsMenuModel::Build(Browser* browser) {
-  AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE);
+  if (!features::IsChromeRefresh2023()) {
+    AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE);
 
-  AddItemWithStringId(IDC_CREATE_SHORTCUT, IDS_ADD_TO_OS_LAUNCH_SURFACE);
+    AddItemWithStringId(IDC_CREATE_SHORTCUT, IDS_ADD_TO_OS_LAUNCH_SURFACE);
+  }
   AddItemWithStringId(IDC_NAME_WINDOW, IDS_NAME_WINDOW);
   if (commander::IsEnabled())
     AddItemWithStringId(IDC_TOGGLE_QUICK_COMMANDS, IDS_TOGGLE_QUICK_COMMANDS);
 
   AddSeparator(ui::NORMAL_SEPARATOR);
-  AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
-  if (!base::FeatureList::IsEnabled(features::kExtensionsMenuInAppMenu) &&
-      !features::IsChromeRefresh2023()) {
-    AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
+  if (!features::IsChromeRefresh2023()) {
+    AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
+    if (!base::FeatureList::IsEnabled(features::kExtensionsMenuInAppMenu) &&
+        !features::IsChromeRefresh2023()) {
+      AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
+    }
   }
   AddItemWithStringId(IDC_PERFORMANCE, IDS_SHOW_PERFORMANCE);
   SetElementIdentifierAt(GetIndexOfCommandId(IDC_PERFORMANCE).value(),
@@ -307,6 +317,33 @@
     AddSeparator(ui::NORMAL_SEPARATOR);
     AddCheckItemWithStringId(IDC_PROFILING_ENABLED, IDS_PROFILING_ENABLED);
   }
+  if (features::IsChromeRefresh2023()) {
+    if (base::FeatureList::IsEnabled(features::kChromeLabs)) {
+      auto* profile = browser->profile();
+      chrome_labs_model_ = std::make_unique<ChromeLabsModel>();
+      UpdateChromeLabsNewBadgePrefs(profile, chrome_labs_model_.get());
+      if (ShouldShowChromeLabsUI(chrome_labs_model_.get(), profile)) {
+        BooleanPrefMember show_chrome_labs_item;
+        show_chrome_labs_item.Init(chrome_labs_prefs::kBrowserLabsEnabled,
+                                   profile->GetPrefs());
+        if (show_chrome_labs_item.GetValue()) {
+          AddSeparator(ui::NORMAL_SEPARATOR);
+          AddItemWithStringIdAndIcon(
+              IDC_SHOW_CHROME_LABS, IDS_CHROMELABS,
+              ui::ImageModel::FromVectorIcon(kChromeLabsChromeRefreshIcon,
+                                             kDefaultIconSize));
+          SetElementIdentifierAt(
+              GetIndexOfCommandId(IDC_SHOW_CHROME_LABS).value(),
+              kChromeLabsMenuItem);
+        }
+      }
+    }
+    SetCommandIcon(this, IDC_NAME_WINDOW, kNameWindowIcon);
+    SetCommandIcon(this, IDC_TOGGLE_QUICK_COMMANDS, kQuickCommandsIcon);
+    SetCommandIcon(this, IDC_PERFORMANCE, kPerformanceIcon);
+    SetCommandIcon(this, IDC_TASK_MANAGER, kTaskManagerIcon);
+    SetCommandIcon(this, IDC_DEV_TOOLS, kDeveloperToolsIcon);
+  }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -338,17 +375,11 @@
           .value(),
       kVisitChromeWebStoreMenuItem);
   if (features::IsChromeRefresh2023()) {
-    SetIcon(
-        GetIndexOfCommandId(IDC_EXTENSIONS_SUBMENU_MANAGE_EXTENSIONS).value(),
-        ui::ImageModel::FromVectorIcon(
-            vector_icons::kExtensionChromeRefreshIcon, ui::kColorMenuIcon,
-            kDefaultIconSize));
+    SetCommandIcon(this, IDC_EXTENSIONS_SUBMENU_MANAGE_EXTENSIONS,
+                   vector_icons::kExtensionChromeRefreshIcon);
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-    SetIcon(
-        GetIndexOfCommandId(IDC_EXTENSIONS_SUBMENU_VISIT_CHROME_WEB_STORE)
-            .value(),
-        ui::ImageModel::FromVectorIcon(vector_icons::kGoogleChromeWebstoreIcon,
-                                       ui::kColorMenuIcon, kDefaultIconSize));
+    SetCommandIcon(this, IDC_EXTENSIONS_SUBMENU_VISIT_CHROME_WEB_STORE,
+                   vector_icons::kGoogleChromeWebstoreIcon);
 #endif
   }
 }
@@ -769,6 +800,13 @@
       }
       LogMenuAction(MENU_ACTION_PROFILING_ENABLED);
       break;
+    case IDC_SHOW_CHROME_LABS:
+      if (!uma_action_recorded_) {
+        UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ShowChromeLabs",
+                                   delta);
+      }
+      LogMenuAction(MENU_ACTION_SHOW_CHROME_LABS);
+      break;
 
     // Zoom menu
     case IDC_ZOOM_MINUS:
@@ -1105,10 +1143,8 @@
     SetElementIdentifierAt(GetIndexOfCommandId(IDC_EXTENSIONS_SUBMENU).value(),
                            kExtensionsMenuItem);
     if (features::IsChromeRefresh2023()) {
-      SetIcon(GetIndexOfCommandId(IDC_EXTENSIONS_SUBMENU).value(),
-              ui::ImageModel::FromVectorIcon(
-                  vector_icons::kExtensionChromeRefreshIcon, ui::kColorMenuIcon,
-                  kDefaultIconSize));
+      SetCommandIcon(this, IDC_EXTENSIONS_SUBMENU,
+                     vector_icons::kExtensionChromeRefreshIcon);
     }
   }
 
@@ -1148,10 +1184,7 @@
           GetInstallPWAAppMenuItemName(browser_)) {
     AddItem(IDC_INSTALL_PWA, *name);
     if (features::IsChromeRefresh2023()) {
-      SetIcon(
-          GetIndexOfCommandId(IDC_INSTALL_PWA).value(),
-          ui::ImageModel::FromVectorIcon(kInstallDesktopChromeRefreshIcon,
-                                         ui::kColorMenuIcon, kDefaultIconSize));
+      SetCommandIcon(this, IDC_INSTALL_PWA, kInstallDesktopChromeRefreshIcon);
     }
   } else if (absl::optional<web_app::AppId> app_id =
                  web_app::GetWebAppForActiveTab(browser_)) {
@@ -1168,9 +1201,8 @@
           IDC_OPEN_IN_PWA_WINDOW,
           l10n_util::GetStringFUTF16(IDS_OPEN_IN_APP_WINDOW, truncated_name));
       if (features::IsChromeRefresh2023()) {
-        SetIcon(GetIndexOfCommandId(IDC_OPEN_IN_PWA_WINDOW).value(),
-                ui::ImageModel::FromVectorIcon(
-                    kDesktopWindowsIcon, ui::kColorMenuIcon, kDefaultIconSize));
+        SetCommandIcon(this, IDC_OPEN_IN_PWA_WINDOW,
+                       kDesktopWindowsChromeRefreshIcon);
       }
     }
   }
@@ -1272,35 +1304,28 @@
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
   if (features::IsChromeRefresh2023()) {
-    auto set_icon = [this](int command_id, const gfx::VectorIcon& vector_icon) {
-      auto index = GetIndexOfCommandId(command_id);
-      if (index) {
-        SetIcon(index.value(),
-                ui::ImageModel::FromVectorIcon(vector_icon, ui::kColorMenuIcon,
-                                               kDefaultIconSize));
-      }
-    };
-    set_icon(IDC_NEW_TAB, kNewTabRefreshIcon);
-    set_icon(IDC_NEW_WINDOW, kNewWindowIcon);
-    set_icon(IDC_NEW_INCOGNITO_WINDOW, kIncognitoRefreshMenuIcon);
-    set_icon(IDC_RECENT_TABS_MENU, kHistoryIcon);
-    set_icon(IDC_SHOW_DOWNLOADS, kDownloadMenuIcon);
-    set_icon(IDC_BOOKMARKS_MENU, kBookmarksListsMenuIcon);
-    set_icon(IDC_VIEW_PASSWORDS, kKeyChromeRefreshIcon);
-    set_icon(IDC_ZOOM_MENU, kZoomInIcon);
-    set_icon(IDC_PRINT, kPrintMenuIcon);
-    set_icon(IDC_TRANSLATE_PAGE, kTranslateChromeRefreshIcon);
-    set_icon(IDC_ROUTE_MEDIA, kCastMenuIcon);
-    set_icon(IDC_FIND_AND_EDIT_MENU, kSearchMenuIcon);
-    set_icon(IDC_PASSWORDS_AND_AUTOFILL_MENU, kKeyChromeRefreshIcon);
-    set_icon(IDC_MORE_TOOLS_MENU, kMoreToolsMenuIcon);
-    set_icon(IDC_OPTIONS, kSettingsMenuIcon);
+    SetCommandIcon(this, IDC_NEW_TAB, kNewTabRefreshIcon);
+    SetCommandIcon(this, IDC_NEW_WINDOW, kNewWindowIcon);
+    SetCommandIcon(this, IDC_NEW_INCOGNITO_WINDOW, kIncognitoRefreshMenuIcon);
+    SetCommandIcon(this, IDC_RECENT_TABS_MENU, kHistoryIcon);
+    SetCommandIcon(this, IDC_SHOW_DOWNLOADS, kDownloadMenuIcon);
+    SetCommandIcon(this, IDC_BOOKMARKS_MENU, kBookmarksListsMenuIcon);
+    SetCommandIcon(this, IDC_VIEW_PASSWORDS, kKeyChromeRefreshIcon);
+    SetCommandIcon(this, IDC_ZOOM_MENU, kZoomInIcon);
+    SetCommandIcon(this, IDC_PRINT, kPrintMenuIcon);
+    SetCommandIcon(this, IDC_TRANSLATE_PAGE, kTranslateChromeRefreshIcon);
+    SetCommandIcon(this, IDC_ROUTE_MEDIA, kCastChromeRefreshIcon);
+    SetCommandIcon(this, IDC_FIND_AND_EDIT_MENU, kSearchMenuIcon);
+    SetCommandIcon(this, IDC_PASSWORDS_AND_AUTOFILL_MENU,
+                   kKeyChromeRefreshIcon);
+    SetCommandIcon(this, IDC_MORE_TOOLS_MENU, kMoreToolsMenuIcon);
+    SetCommandIcon(this, IDC_OPTIONS, kSettingsMenuIcon);
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-    set_icon(IDC_HELP_MENU, kHelpMenuIcon);
-    set_icon(IDC_SHOW_SEARCH_COMPANION,
-             vector_icons::kGoogleGLogoMonochromeIcon);
+    SetCommandIcon(this, IDC_HELP_MENU, kHelpMenuIcon);
+    SetCommandIcon(this, IDC_SHOW_SEARCH_COMPANION,
+                   vector_icons::kGoogleGLogoMonochromeIcon);
 #endif
-    set_icon(IDC_EXIT, kExitMenuIcon);
+    SetCommandIcon(this, IDC_EXIT, kExitMenuIcon);
   }
 
   uma_action_recorded_ = false;
diff --git a/chrome/browser/ui/toolbar/app_menu_model.h b/chrome/browser/ui/toolbar/app_menu_model.h
index 33fd495..8648fcc 100644
--- a/chrome/browser/ui/toolbar/app_menu_model.h
+++ b/chrome/browser/ui/toolbar/app_menu_model.h
@@ -14,6 +14,7 @@
 #include "build/chromeos_buildflags.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "components/prefs/pref_change_registrar.h"
 #include "content/public/browser/host_zoom_map.h"
 #include "content/public/browser/web_contents_observer.h"
@@ -85,6 +86,8 @@
   MENU_ACTION_VISIT_CHROME_WEB_STORE = 57,
   MENU_ACTION_PASSWORD_MANAGER = 58,
   MENU_ACTION_TRANSLATE_PAGE = 59,
+  // ToolsMenuModel
+  MENU_ACTION_SHOW_CHROME_LABS = 60,
   LIMIT_MENU_ACTION
 };
 
@@ -110,6 +113,7 @@
 class ToolsMenuModel : public ui::SimpleMenuModel {
  public:
   DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kPerformanceMenuItem);
+  DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kChromeLabsMenuItem);
 
   ToolsMenuModel(ui::SimpleMenuModel::Delegate* delegate, Browser* browser);
 
@@ -120,6 +124,8 @@
 
  private:
   void Build(Browser* browser);
+
+  std::unique_ptr<ChromeLabsModel> chrome_labs_model_ = nullptr;
 };
 
 class ExtensionsMenuModel : public ui::SimpleMenuModel {
diff --git a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
index 4b7d663..f03b324 100644
--- a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
+++ b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
@@ -4,6 +4,10 @@
 
 #include "chrome/browser/ui/toolbar/app_menu_model.h"
 
+#include <algorithm>
+#include <vector>
+
+#include "base/functional/callback.h"
 #include "base/memory/ptr_util.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/branding_buildflags.h"
@@ -28,6 +32,7 @@
 #include "components/performance_manager/public/features.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/ui_base_features.h"
 #include "ui/gfx/color_palette.h"
 
 #if BUILDFLAG(IS_CHROMEOS)
@@ -49,9 +54,7 @@
 class MenuError : public GlobalError {
  public:
   explicit MenuError(int command_id)
-      : command_id_(command_id),
-        execute_count_(0) {
-  }
+      : command_id_(command_id), execute_count_(0) {}
 
   MenuError(const MenuError&) = delete;
   MenuError& operator=(const MenuError&) = delete;
@@ -86,7 +89,7 @@
   }
 };
 
-} // namespace
+}  // namespace
 
 class AppMenuModelTest : public BrowserWithTestWindowTest,
                          public ui::AcceleratorProvider {
@@ -125,8 +128,17 @@
                                 public testing::WithParamInterface<bool> {
  public:
   ExtensionsMenuModelTest() {
-    feature_list_.InitWithFeatureState(features::kExtensionsMenuInAppMenu,
-                                       GetParam());
+    std::vector<base::test::FeatureRef> enabled_features;
+    std::vector<base::test::FeatureRef> disabled_features;
+    if (GetParam()) {
+      enabled_features = {features::kExtensionsMenuInAppMenu};
+      disabled_features = {features::kChromeRefresh2023};
+    } else {
+      enabled_features = {};
+      disabled_features = {features::kExtensionsMenuInAppMenu,
+                           features::kChromeRefresh2023};
+    }
+    feature_list_.InitWithFeatures(enabled_features, disabled_features);
   }
 
   ExtensionsMenuModelTest(const ExtensionsMenuModelTest&) = delete;
@@ -140,6 +152,18 @@
     ExtensionsMenuModelTest,
     /* features::kNewExtensionsTopLevelMenu enabled */ testing::Bool());
 
+class TestAppMenuModelCR2023 : public AppMenuModelTest {
+ public:
+  TestAppMenuModelCR2023() {
+    feature_list_.InitWithFeatures({features::kChromeRefresh2023}, {});
+  }
+
+  TestAppMenuModelCR2023(const TestAppMenuModelCR2023&) = delete;
+  TestAppMenuModelCR2023& operator=(const TestAppMenuModelCR2023&) = delete;
+
+  ~TestAppMenuModelCR2023() override = default;
+};
+
 // Copies parts of MenuModelTest::Delegate and combines them with the
 // AppMenuModel since AppMenuModel is now a SimpleMenuModel::Delegate and
 // not derived from SimpleMenuModel.
@@ -240,7 +264,7 @@
   for (size_t i = 0; i < item_count; ++i) {
     if (model.GetTypeAt(i) == ui::MenuModel::TYPE_SUBMENU) {
       // The bookmarks submenu comes after the Tabs and Downloads items.
-      bookmarks_model_index = i + 2;
+      bookmarks_model_index = i + (features::IsChromeRefresh2023() ? 3 : 2);
       break;
     }
   }
@@ -319,6 +343,51 @@
   EXPECT_TRUE(toolModel.IsEnabledAt(performance_index));
 }
 
+TEST_F(TestAppMenuModelCR2023, ModelHasIcons) {
+  // Skip the items that are either not supposed to have an icon, or are not
+  // ready to be tested. Remove items once they're ready for testing.
+  static const std::vector<int> skip_commands = {
+      IDC_RECENT_TABS_MENU, IDC_ABOUT, IDC_PIN_TO_START_SCREEN,
+      IDC_EXTENSIONS_SUBMENU_VISIT_CHROME_WEB_STORE, IDC_TAKE_SCREENSHOT};
+  AppMenuModel model(this, browser());
+  model.Init();
+
+  const auto check_for_icons = [](std::u16string menu_name,
+                                  ui::MenuModel* model) -> void {
+    auto check_for_icons_impl = [](std::u16string menu_name,
+                                   ui::MenuModel* model,
+                                   auto& check_for_icons_ref) -> void {
+      // Except where noted by the above vector, all menu items in CR2023 must
+      // have icons.
+      for (size_t i = 0; i < model->GetItemCount(); ++i) {
+        auto menu_type = model->GetTypeAt(i);
+        if (menu_type != ui::MenuModel::TYPE_ACTIONABLE_SUBMENU &&
+            menu_type != ui::MenuModel::TYPE_SUBMENU &&
+            std::find(skip_commands.cbegin(), skip_commands.cend(),
+                      model->GetCommandIdAt(i)) != skip_commands.cend()) {
+          continue;
+        }
+        if (menu_type != ui::MenuModel::TYPE_SEPARATOR &&
+            menu_type != ui::MenuModel::TYPE_TITLE) {
+          EXPECT_TRUE(!model->GetIconAt(i).IsEmpty())
+              << "\"" << menu_name << "\" menu item \"" << model->GetLabelAt(i)
+              << "\" is missing the icon!";
+        }
+        if ((menu_type == ui::MenuModel::TYPE_SUBMENU ||
+             menu_type == ui::MenuModel::TYPE_ACTIONABLE_SUBMENU) &&
+            std::find(skip_commands.cbegin(), skip_commands.cend(),
+                      model->GetCommandIdAt(i)) == skip_commands.cend()) {
+          check_for_icons_ref(model->GetLabelAt(i), model->GetSubmenuModelAt(i),
+                              check_for_icons_ref);
+        }
+      }
+    };
+    check_for_icons_impl(menu_name, model, check_for_icons_impl);
+  };
+
+  check_for_icons(u"<Root Menu>", &model);
+}
+
 #if BUILDFLAG(IS_CHROMEOS)
 // Tests settings menu items is disabled in the app menu when
 // kSystemFeaturesDisableList is set.
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_model.cc b/chrome/browser/ui/toolbar/chrome_labs_model.cc
similarity index 96%
rename from chrome/browser/ui/views/toolbar/chrome_labs_model.cc
rename to chrome/browser/ui/toolbar/chrome_labs_model.cc
index e83dfe5..e6c102d2 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_model.cc
+++ b/chrome/browser/ui/toolbar/chrome_labs_model.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 
 #include "base/no_destructor.h"
 #include "base/strings/utf_string_conversions.h"
@@ -22,10 +22,11 @@
 }
 
 void SetLabInfoForTesting(const std::vector<LabInfo>& test_feature_info) {
-  if (test_feature_info.empty())
+  if (test_feature_info.empty()) {
     GetTestData().reset();
-  else
+  } else {
     GetTestData() = test_feature_info;
+  }
 }
 
 // TODO(elainechien): Explore better ways to allow developers to add their
@@ -33,8 +34,9 @@
 // Experiments featured in labs must have feature entries of type FEATURE_VALUE
 // (Default, Enabled, Disabled states) or FEATURE_WITH_PARAMS_VALUE
 const std::vector<LabInfo>& GetData() {
-  if (GetTestData())
+  if (GetTestData()) {
     return GetTestData().value();
+  }
 
   static const base::NoDestructor<std::vector<LabInfo>> lab_info_([]() {
     std::vector<LabInfo> lab_info;
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_model.h b/chrome/browser/ui/toolbar/chrome_labs_model.h
similarity index 91%
rename from chrome/browser/ui/views/toolbar/chrome_labs_model.h
rename to chrome/browser/ui/toolbar/chrome_labs_model.h
index 7160c7a..641bc80a 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_model.h
+++ b/chrome/browser/ui/toolbar/chrome_labs_model.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_MODEL_H_
-#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_MODEL_H_
+#ifndef CHROME_BROWSER_UI_TOOLBAR_CHROME_LABS_MODEL_H_
+#define CHROME_BROWSER_UI_TOOLBAR_CHROME_LABS_MODEL_H_
 
 #include <string>
 #include <vector>
@@ -60,4 +60,4 @@
   void SetModelDataForTesting(const std::vector<LabInfo>& test_feature_info);
 };
 
-#endif  // CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_MODEL_H_
+#endif  // CHROME_BROWSER_UI_TOOLBAR_CHROME_LABS_MODEL_H_
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_model_unittest.cc b/chrome/browser/ui/toolbar/chrome_labs_model_unittest.cc
similarity index 97%
rename from chrome/browser/ui/views/toolbar/chrome_labs_model_unittest.cc
rename to chrome/browser/ui/toolbar/chrome_labs_model_unittest.cc
index 9bbc2071..a62a73bd 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_model_unittest.cc
+++ b/chrome/browser/ui/toolbar/chrome_labs_model_unittest.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "base/i18n/case_conversion.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "base/test/icu_test_util.h"
 #include "chrome/browser/about_flags.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/test/views/chrome_views_test_base.h"
 #include "components/flags_ui/feature_entry.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_utils.cc b/chrome/browser/ui/toolbar/chrome_labs_utils.cc
similarity index 78%
rename from chrome/browser/ui/views/toolbar/chrome_labs_utils.cc
rename to chrome/browser/ui/toolbar/chrome_labs_utils.cc
index 6194ddb..eeb49421 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_utils.cc
+++ b/chrome/browser/ui/toolbar/chrome_labs_utils.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/views/toolbar/chrome_labs_utils.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
 
 #include "base/containers/contains.h"
 #include "base/ranges/algorithm.h"
@@ -90,8 +90,9 @@
     }
   }
 
-  for (const std::string& key : entries_to_remove)
+  for (const std::string& key : entries_to_remove) {
     new_badge_prefs.Remove(key);
+  }
 }
 
 bool ShouldShowChromeLabsUI(const ChromeLabsModel* model, Profile* profile) {
@@ -108,3 +109,28 @@
                                 return IsChromeLabsFeatureValid(lab, profile);
                               });
 }
+
+bool AreNewChromeLabsExperimentsAvailable(const ChromeLabsModel* model,
+                                          Profile* profile) {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  ScopedDictPrefUpdate update(
+      profile->GetPrefs(), chrome_labs_prefs::kChromeLabsNewBadgeDictAshChrome);
+#else
+  ScopedDictPrefUpdate update(g_browser_process->local_state(),
+                              chrome_labs_prefs::kChromeLabsNewBadgeDict);
+#endif
+
+  base::Value::Dict& new_badge_prefs = update.Get();
+
+  std::vector<std::string> lab_internal_names;
+  const std::vector<LabInfo>& all_labs = model->GetLabInfo();
+
+  return base::ranges::any_of(
+      all_labs.begin(), all_labs.end(), [&new_badge_prefs](const LabInfo& lab) {
+        absl::optional<int> new_badge_pref_value =
+            new_badge_prefs.FindInt(lab.internal_name);
+        // Show the dot indicator if new experiments have not been seen yet.
+        return new_badge_pref_value ==
+               chrome_labs_prefs::kChromeLabsNewExperimentPrefValue;
+      });
+}
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_utils.h b/chrome/browser/ui/toolbar/chrome_labs_utils.h
similarity index 61%
rename from chrome/browser/ui/views/toolbar/chrome_labs_utils.h
rename to chrome/browser/ui/toolbar/chrome_labs_utils.h
index 5b0f1372..ad64834 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_utils.h
+++ b/chrome/browser/ui/toolbar/chrome_labs_utils.h
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_UTILS_H_
-#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_UTILS_H_
+#ifndef CHROME_BROWSER_UI_TOOLBAR_CHROME_LABS_UTILS_H_
+#define CHROME_BROWSER_UI_TOOLBAR_CHROME_LABS_UTILS_H_
 
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 
 class Profile;
 
@@ -21,4 +21,9 @@
 // menu item, etc..) be shown.
 bool ShouldShowChromeLabsUI(const ChromeLabsModel* model, Profile* profile);
 
-#endif  //  CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_UTILS_H_
+// This will return true if there are new experiments and they haven't yet been
+// seen.
+bool AreNewChromeLabsExperimentsAvailable(const ChromeLabsModel* model,
+                                          Profile* profile);
+
+#endif  //  CHROME_BROWSER_UI_TOOLBAR_CHROME_LABS_UTILS_H_
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
index e7b7278..f030c830 100644
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -41,7 +41,7 @@
 // with submenu to manage extensions and visit chrome web store.
 BASE_FEATURE(kExtensionsMenuInAppMenu,
              "ExtensionsMenuInAppMenu",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 #if !defined(ANDROID)
 // Enables "Access Code Cast" UI.
diff --git a/chrome/browser/ui/user_education/active_tab_tracker.cc b/chrome/browser/ui/user_education/active_tab_tracker.cc
deleted file mode 100644
index f7de8a0f..0000000
--- a/chrome/browser/ui/user_education/active_tab_tracker.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2018 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/user_education/active_tab_tracker.h"
-
-#include <utility>
-
-#include "base/time/tick_clock.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-
-ActiveTabTracker::ActiveTabTracker(const base::TickClock* clock,
-                                   ActiveTabClosedCallback callback)
-    : clock_(clock), active_tab_closed_callback_(std::move(callback)) {
-  DCHECK(active_tab_closed_callback_);
-}
-
-ActiveTabTracker::~ActiveTabTracker() {
-  // All tab strip models should have been removed before destruction.
-  DCHECK(active_tab_changed_times_.empty());
-}
-
-void ActiveTabTracker::AddTabStripModel(TabStripModel* tab_strip_model) {
-  active_tab_changed_times_[tab_strip_model] = clock_->NowTicks();
-  tab_strip_model->AddObserver(this);
-}
-
-void ActiveTabTracker::RemoveTabStripModel(TabStripModel* tab_strip_model) {
-  // Get |std::map| iterator in |active_tab_changed_times_|.
-  auto it = active_tab_changed_times_.find(tab_strip_model);
-  DCHECK(it != active_tab_changed_times_.end());
-
-  // Stop observing and remove map element.
-  tab_strip_model->RemoveObserver(this);
-  active_tab_changed_times_.erase(it);
-}
-
-void ActiveTabTracker::OnTabStripModelChanged(
-    TabStripModel* model,
-    const TabStripModelChange& change,
-    const TabStripSelectionChange& selection) {
-  DCHECK(active_tab_changed_times_.find(model) !=
-         active_tab_changed_times_.end());
-
-  const absl::optional<size_t> prev_active_tab_index =
-      selection.old_model.active();
-
-  if (change.type() == TabStripModelChange::Type::kRemoved) {
-    auto* remove = change.GetRemove();
-    // If the closing tab was the active tab, call the callback.
-    // Ignore if the tab isn't being closed (this would happen if it were
-    // dragged to a different tab strip).
-      for (const auto& contents : remove->contents) {
-        if (contents.remove_reason ==
-                TabStripModelChange::RemoveReason::kDeleted &&
-            static_cast<size_t>(contents.index) == prev_active_tab_index) {
-          active_tab_closed_callback_.Run(
-              model, clock_->NowTicks() - active_tab_changed_times_[model]);
-        }
-      }
-    }
-
-  if (selection.active_tab_changed())
-    active_tab_changed_times_[model] = clock_->NowTicks();
-}
diff --git a/chrome/browser/ui/user_education/active_tab_tracker.h b/chrome/browser/ui/user_education/active_tab_tracker.h
deleted file mode 100644
index 590fa652..0000000
--- a/chrome/browser/ui/user_education/active_tab_tracker.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2018 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_USER_EDUCATION_ACTIVE_TAB_TRACKER_H_
-#define CHROME_BROWSER_UI_USER_EDUCATION_ACTIVE_TAB_TRACKER_H_
-
-#include <unordered_map>
-
-#include "base/functional/callback.h"
-#include "base/memory/raw_ptr.h"
-#include "base/time/time.h"
-#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
-
-namespace base {
-class TickClock;
-}
-
-class TabStripModel;
-
-// Tracks when tabs become active and notifies client when active tabs are
-// closed. The client must register and unregister |TabStripModel|s and set a
-// callback to be called when an active tab is closed.
-class ActiveTabTracker : public TabStripModelObserver {
- public:
-  // Callback to be called when an active tab is closed. The callback takes two
-  // arguments: the TabStripModel that changed and how long the tab was active.
-  using ActiveTabClosedCallback =
-      base::RepeatingCallback<void(TabStripModel*, base::TimeDelta)>;
-
-  ActiveTabTracker(const base::TickClock* clock,
-                   ActiveTabClosedCallback callback);
-
-  ActiveTabTracker(const ActiveTabTracker&) = delete;
-  ActiveTabTracker& operator=(const ActiveTabTracker&) = delete;
-
-  ~ActiveTabTracker() override;
-
-  // Observes |tab_strip_model|. Its last activation time is set to the current
-  // time.
-  void AddTabStripModel(TabStripModel* tab_strip_model);
-
-  // Stops observing |tab_strip_model|. The |tab_strip_model| must have been
-  // previously added.
-  void RemoveTabStripModel(TabStripModel* tab_strip_model);
-
- private:
-  // TabStripModelObserver:
-  void OnTabStripModelChanged(
-      TabStripModel* model,
-      const TabStripModelChange& change,
-      const TabStripSelectionChange& selection) override;
-
-  const raw_ptr<const base::TickClock> clock_;
-  const ActiveTabClosedCallback active_tab_closed_callback_;
-  // Map containing the latest time the active tab changed for each tab strip
-  // model. Also serves as the list of all registered |TabStripModel|s.
-  std::unordered_map<TabStripModel*, base::TimeTicks> active_tab_changed_times_;
-};
-
-#endif  // CHROME_BROWSER_UI_USER_EDUCATION_ACTIVE_TAB_TRACKER_H_
diff --git a/chrome/browser/ui/user_education/active_tab_tracker_unittest.cc b/chrome/browser/ui/user_education/active_tab_tracker_unittest.cc
deleted file mode 100644
index 71f670f8..0000000
--- a/chrome/browser/ui/user_education/active_tab_tracker_unittest.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright 2018 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/user_education/active_tab_tracker.h"
-
-#include <memory>
-#include <utility>
-
-#include "base/test/mock_callback.h"
-#include "base/test/simple_test_tick_clock.h"
-#include "chrome/browser/ui/tabs/tab_enums.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/browser/ui/tabs/tab_strip_user_gesture_details.h"
-#include "chrome/browser/ui/tabs/test_tab_strip_model_delegate.h"
-#include "chrome/test/base/testing_profile.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_task_environment.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/base/models/list_selection_model.h"
-
-using ::testing::_;
-using ::testing::InSequence;
-using ::testing::Mock;
-
-namespace {
-
-class TestTabStripModelDelegateNoUnloadListener
-    : public TestTabStripModelDelegate {
- public:
-  TestTabStripModelDelegateNoUnloadListener() = default;
-  ~TestTabStripModelDelegateNoUnloadListener() override = default;
-
-  bool RunUnloadListenerBeforeClosing(content::WebContents* contents) override {
-    return false;
-  }
-};
-
-constexpr base::TimeDelta kTimeStep = base::Seconds(1);
-
-}  // namespace
-
-class ActiveTabTrackerTest : public ::testing::Test {
- protected:
-  void SetUp() override {
-    TestingProfile::Builder profile_builder;
-    profile_ = profile_builder.Build();
-  }
-
-  void AddTab(TabStripModel* model) {
-    std::unique_ptr<content::WebContents> contents =
-        content::WebContents::Create(
-            content::WebContents::CreateParams(profile_.get()));
-    model->AppendWebContents(std::move(contents), true);
-  }
-
-  void CloseTabAt(TabStripModel* model, int index) {
-    model->CloseWebContentsAt(index, TabCloseTypes::CLOSE_USER_GESTURE);
-  }
-
-  Profile* profile() { return profile_.get(); }
-  base::SimpleTestTickClock* clock() { return &clock_; }
-
- private:
-  // A |BrowserTaskEnvironment| is needed for creating and using
-  // |WebContents|es in a unit test.
-  content::BrowserTaskEnvironment task_environment_;
-  std::unique_ptr<TestingProfile> profile_;
-  base::SimpleTestTickClock clock_;
-};
-
-TEST_F(ActiveTabTrackerTest, NotifiesOnActiveTabClosed) {
-  TestTabStripModelDelegateNoUnloadListener delegate;
-  TabStripModel model(&delegate, profile());
-
-  base::MockCallback<ActiveTabTracker::ActiveTabClosedCallback> cb;
-  ActiveTabTracker tracker(clock(), cb.Get());
-  tracker.AddTabStripModel(&model);
-
-  AddTab(&model);
-  AddTab(&model);
-  clock()->Advance(kTimeStep);
-
-  model.ActivateTabAt(0, TabStripUserGestureDetails(
-                             TabStripUserGestureDetails::GestureType::kOther));
-
-  clock()->Advance(kTimeStep);
-
-  EXPECT_CALL(cb, Run(&model, kTimeStep)).Times(1);
-  CloseTabAt(&model, 0);
-
-  tracker.RemoveTabStripModel(&model);
-
-  model.DetachAndDeleteWebContentsAt(0);
-}
-
-TEST_F(ActiveTabTrackerTest, UpdatesTimes) {
-  TestTabStripModelDelegateNoUnloadListener delegate;
-  TabStripModel model(&delegate, profile());
-
-  base::MockCallback<ActiveTabTracker::ActiveTabClosedCallback> cb;
-  ActiveTabTracker tracker(clock(), cb.Get());
-  tracker.AddTabStripModel(&model);
-
-  AddTab(&model);
-  AddTab(&model);
-  model.ActivateTabAt(0, TabStripUserGestureDetails(
-                             TabStripUserGestureDetails::GestureType::kOther));
-
-  clock()->Advance(kTimeStep);
-
-  model.ActivateTabAt(1, TabStripUserGestureDetails(
-                             TabStripUserGestureDetails::GestureType::kOther));
-  model.ActivateTabAt(0, TabStripUserGestureDetails(
-                             TabStripUserGestureDetails::GestureType::kOther));
-
-  EXPECT_CALL(cb, Run(&model, base::TimeDelta())).Times(1);
-  CloseTabAt(&model, 0);
-
-  tracker.RemoveTabStripModel(&model);
-
-  model.DetachAndDeleteWebContentsAt(0);
-}
-
-TEST_F(ActiveTabTrackerTest, IgnoresInactiveTabs) {
-  TestTabStripModelDelegateNoUnloadListener delegate;
-  TabStripModel model(&delegate, profile());
-
-  base::MockCallback<ActiveTabTracker::ActiveTabClosedCallback> cb;
-  ActiveTabTracker tracker(clock(), cb.Get());
-  tracker.AddTabStripModel(&model);
-
-  AddTab(&model);
-  AddTab(&model);
-  model.ActivateTabAt(0, TabStripUserGestureDetails(
-                             TabStripUserGestureDetails::GestureType::kOther));
-
-  EXPECT_CALL(cb, Run(_, _)).Times(0);
-  CloseTabAt(&model, 1);
-
-  tracker.RemoveTabStripModel(&model);
-
-  model.DetachAndDeleteWebContentsAt(0);
-}
-
-TEST_F(ActiveTabTrackerTest, TracksMultipleTabStripModels) {
-  TestTabStripModelDelegateNoUnloadListener delegate;
-  TabStripModel model_1(&delegate, profile());
-  TabStripModel model_2(&delegate, profile());
-
-  base::MockCallback<ActiveTabTracker::ActiveTabClosedCallback> cb;
-  ActiveTabTracker tracker(clock(), cb.Get());
-  tracker.AddTabStripModel(&model_1);
-  tracker.AddTabStripModel(&model_2);
-
-  AddTab(&model_1);
-  AddTab(&model_1);
-  AddTab(&model_2);
-  AddTab(&model_2);
-
-  clock()->Advance(kTimeStep);
-  model_1.ActivateTabAt(0,
-                        TabStripUserGestureDetails(
-                            TabStripUserGestureDetails::GestureType::kOther));
-
-  clock()->Advance(kTimeStep);
-  model_2.ActivateTabAt(0,
-                        TabStripUserGestureDetails(
-                            TabStripUserGestureDetails::GestureType::kOther));
-
-  {
-    InSequence seq;
-    EXPECT_CALL(cb, Run(&model_1, kTimeStep)).Times(1);
-    EXPECT_CALL(cb, Run(&model_2, base::TimeDelta())).Times(1);
-  }
-
-  CloseTabAt(&model_1, 0);
-  CloseTabAt(&model_2, 0);
-
-  tracker.RemoveTabStripModel(&model_1);
-  tracker.RemoveTabStripModel(&model_2);
-
-  model_1.DetachAndDeleteWebContentsAt(0);
-  model_2.DetachAndDeleteWebContentsAt(0);
-}
-
-TEST_F(ActiveTabTrackerTest, StopsObservingUponRemove) {
-  TestTabStripModelDelegateNoUnloadListener delegate;
-  TabStripModel model(&delegate, profile());
-
-  base::MockCallback<ActiveTabTracker::ActiveTabClosedCallback> cb;
-  ActiveTabTracker tracker(clock(), cb.Get());
-  tracker.AddTabStripModel(&model);
-
-  AddTab(&model);
-  AddTab(&model);
-
-  tracker.RemoveTabStripModel(&model);
-
-  EXPECT_CALL(cb, Run(_, _)).Times(0);
-  CloseTabAt(&model, 0);
-
-  model.DetachAndDeleteWebContentsAt(0);
-}
diff --git a/chrome/browser/ui/views/autofill/popup/popup_pixel_test.h b/chrome/browser/ui/views/autofill/popup/popup_pixel_test.h
index 757f992..9bc5f0b 100644
--- a/chrome/browser/ui/views/autofill/popup/popup_pixel_test.h
+++ b/chrome/browser/ui/views/autofill/popup/popup_pixel_test.h
@@ -92,15 +92,9 @@
       return false;
     }
 
-    // VerifyPixelUi works only for these platforms.
-    // TODO(crbug.com/958242): Revise this if supported platforms change.
-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
     auto* test_info = testing::UnitTest::GetInstance()->current_test_info();
     return VerifyPixelUi(widget, test_info->test_case_name(),
-                         test_info->name());
-#else
-    return true;
-#endif
+                         test_info->name()) != ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {}
diff --git a/chrome/browser/ui/views/autofill/popup/popup_row_strategy.cc b/chrome/browser/ui/views/autofill/popup/popup_row_strategy.cc
index 3967b31..d8722f0 100644
--- a/chrome/browser/ui/views/autofill/popup/popup_row_strategy.cc
+++ b/chrome/browser/ui/views/autofill/popup/popup_row_strategy.cc
@@ -157,7 +157,7 @@
   }
 
   if (icon_str == "device") {
-    return ImageViewFromVectorIcon(kLaptopAndSmartphoneIcon);
+    return ImageViewFromVectorIcon(kDevicesIcon);
   }
 
   if (icon_str == "google") {
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
index 347b221d..df454eb 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
@@ -279,6 +279,12 @@
 
 }  // namespace
 
+// Enable an updated dialog UI for the getDisplayMedia picker dialog under the
+// preferCurrentTab constraint.
+BASE_FEATURE(kShareThisTabDialog,
+             "ShareThisTabDialog",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+
 DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(DesktopMediaPickerDialogView,
                                       kDesktopMediaPickerDialogViewIdentifier);
 
@@ -981,7 +987,7 @@
 // static
 std::unique_ptr<DesktopMediaPicker> DesktopMediaPicker::Create(
     const content::MediaStreamRequest* request) {
-  if (base::FeatureList::IsEnabled(media::kShareThisTabDialog) && request &&
+  if (base::FeatureList::IsEnabled(kShareThisTabDialog) && request &&
       request->video_type ==
           blink::mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE_THIS_TAB) {
     return std::make_unique<ShareThisTabDialogViews>();
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h
index 2130d086..01fc095 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h
@@ -7,6 +7,7 @@
 
 #include <string>
 
+#include "base/feature_list.h"
 #include "base/memory/raw_ptr.h"
 #include "build/build_config.h"
 #include "chrome/browser/media/webrtc/desktop_media_picker.h"
@@ -25,6 +26,8 @@
 
 class DesktopMediaPickerViews;
 
+BASE_DECLARE_FEATURE(kShareThisTabDialog);
+
 // Dialog view used for DesktopMediaPickerViews.
 //
 // TODO(crbug.com/987001): Consider renaming this class.
diff --git a/chrome/browser/ui/views/desktop_capture/share_this_tab_dialog_views.cc b/chrome/browser/ui/views/desktop_capture/share_this_tab_dialog_views.cc
index 7b5525e..21966f5 100644
--- a/chrome/browser/ui/views/desktop_capture/share_this_tab_dialog_views.cc
+++ b/chrome/browser/ui/views/desktop_capture/share_this_tab_dialog_views.cc
@@ -61,6 +61,11 @@
   RecordUma(GDMPreferCurrentTabResult::kUserSelectedThisTab);
 }
 
+// The length of the initial delay during which the "Allow"-button is disabled
+// in the share-this-tab dialog.
+const base::FeatureParam<int> kShareThisTabDialogActivationDelayMs{
+    &kShareThisTabDialog, "activation_delay_ms", 500};
+
 }  // namespace
 
 ShareThisTabDialogView::ShareThisTabDialogView(
@@ -131,8 +136,7 @@
   const base::TimeDelta activation_delay =
       (ShouldAutoAccept() || ShouldAutoReject())
           ? base::Milliseconds(0)
-          : base::Milliseconds(
-                media::kShareThisTabDialogActivationDelayMs.Get());
+          : base::Milliseconds(kShareThisTabDialogActivationDelayMs.Get());
   activation_timer_.Start(FROM_HERE, activation_delay,
                           base::BindOnce(&ShareThisTabDialogView::Activate,
                                          weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/views/eye_dropper/eye_dropper_browsertest.cc b/chrome/browser/ui/views/eye_dropper/eye_dropper_browsertest.cc
index c7e2fa8..5c212120 100644
--- a/chrome/browser/ui/views/eye_dropper/eye_dropper_browsertest.cc
+++ b/chrome/browser/ui/views/eye_dropper/eye_dropper_browsertest.cc
@@ -17,6 +17,7 @@
 #include "content/public/test/browser_test.h"
 #include "ui/display/display_switches.h"
 
+// TODO(crbug.com/1448244): enable this test on all supported platforms.
 #if BUILDFLAG(IS_WIN)
 #include "chrome/browser/ui/views/eye_dropper/eye_dropper_view.h"
 #endif
@@ -52,7 +53,8 @@
     auto* test_info = testing::UnitTest::GetInstance()->current_test_info();
     const std::string screenshot_name =
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
-    return VerifyPixelUi(widget, "EyeDropperBrowserTest", screenshot_name);
+    return VerifyPixelUi(widget, "EyeDropperBrowserTest", screenshot_name) !=
+           ui::test::ActionResult::kFailed;
 #else
     return true;
 #endif
@@ -70,8 +72,7 @@
 };
 
 // Invokes the eye dropper.
-// Flaky: https://crbug.com/1131319
-IN_PROC_BROWSER_TEST_P(EyeDropperBrowserTest, DISABLED_InvokeUi_default) {
+IN_PROC_BROWSER_TEST_P(EyeDropperBrowserTest, InvokeUi_default) {
   ShowAndVerifyUi();
 }
 
diff --git a/chrome/browser/ui/views/file_system_access/file_system_access_icon_view.cc b/chrome/browser/ui/views/file_system_access/file_system_access_icon_view.cc
index 695865c..5b8d0660ad 100644
--- a/chrome/browser/ui/views/file_system_access/file_system_access_icon_view.cc
+++ b/chrome/browser/ui/views/file_system_access/file_system_access_icon_view.cc
@@ -97,7 +97,7 @@
 }
 
 const gfx::VectorIcon& FileSystemAccessIconView::GetVectorIcon() const {
-  return has_write_access_ ? vector_icons::kSaveOriginalFileIcon
+  return has_write_access_ ? kFileSaveIcon
                            : vector_icons::kInsertDriveFileOutlineIcon;
 }
 
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index 3cfc3b2..39a1660c 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -153,6 +153,7 @@
 #include "chrome/browser/ui/views/tabs/tab_strip.h"
 #include "chrome/browser/ui/views/theme_copying_widget.h"
 #include "chrome/browser/ui/views/toolbar/browser_app_menu_button.h"
+#include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
 #include "chrome/browser/ui/views/toolbar/reload_button.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/ui/views/translate/translate_bubble_controller.h"
@@ -596,7 +597,7 @@
     gfx::RectF bounds_f(browser_view_->frame()->GetBoundsForTabStripRegion(
         tabstrip_minimum_size));
     views::View::ConvertRectToTarget(browser_view_->parent(), browser_view_,
-        &bounds_f);
+                                     &bounds_f);
     return gfx::ToEnclosingRect(bounds_f);
   }
 
@@ -972,8 +973,9 @@
   auto* global_registry =
       extensions::ExtensionCommandsGlobalRegistry::Get(browser_->profile());
   if (global_registry->registry_for_active_window() ==
-          extension_keybinding_registry_.get())
+      extension_keybinding_registry_.get()) {
     global_registry->set_registry_for_active_window(nullptr);
+  }
 
   // The TabStrip attaches a listener to the model. Make sure we shut down the
   // TabStrip first so that it can cleanly remove the listener.
@@ -1015,9 +1017,9 @@
 BrowserView* BrowserView::GetBrowserViewForNativeWindow(
     gfx::NativeWindow window) {
   views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
-  return widget ?
-      reinterpret_cast<BrowserView*>(widget->GetNativeWindowProperty(
-          kBrowserViewKey)) : nullptr;
+  return widget ? reinterpret_cast<BrowserView*>(
+                      widget->GetNativeWindowProperty(kBrowserViewKey))
+                : nullptr;
 }
 
 // static
@@ -1457,22 +1459,22 @@
 
   if (should_animate) {
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-      loading_animation_tracker_.emplace(
+    loading_animation_tracker_.emplace(
         GetWidget()->GetCompositor()->RequestNewThroughputTracker());
-      loading_animation_tracker_->Start(ash::metrics_util::ForSmoothness(
+    loading_animation_tracker_->Start(ash::metrics_util::ForSmoothness(
         base::BindRepeating(&RecordTabLoadingSmoothness)));
 #endif
-      // Loads are happening, and the timer isn't running, so start it.
-      loading_animation_start_ = base::TimeTicks::Now();
-      loading_animation_timer_.Start(FROM_HERE, base::Milliseconds(30), this,
-                                     &BrowserView::LoadingAnimationCallback);
+    // Loads are happening, and the timer isn't running, so start it.
+    loading_animation_start_ = base::TimeTicks::Now();
+    loading_animation_timer_.Start(FROM_HERE, base::Milliseconds(30), this,
+                                   &BrowserView::LoadingAnimationCallback);
   } else {
     loading_animation_timer_.Stop();
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-      loading_animation_tracker_->Stop();
+    loading_animation_tracker_->Stop();
 #endif
-      // Loads are now complete, update the state if a task was scheduled.
-      LoadingAnimationCallback();
+    // Loads are now complete, update the state if a task was scheduled.
+    LoadingAnimationCallback();
   }
 }
 
@@ -1515,8 +1517,7 @@
   // some work.  This also prevents extra events from being reported by the
   // Visibility API under Windows, as ChangeWebContents will briefly hide
   // the WebContents window.
-  bool change_tab_contents =
-      contents_web_view_->web_contents() != new_contents;
+  bool change_tab_contents = contents_web_view_->web_contents() != new_contents;
 
 #if BUILDFLAG(IS_MAC)
   // Widget::IsActive is inconsistent between Mac and Aura, so don't check for
@@ -1554,8 +1555,7 @@
   // callback to us and trigger layout.
   if (bookmark_bar_view_.get()) {
     bookmark_bar_view_->SetBookmarkBarState(
-        browser_->bookmark_bar_state(),
-        BookmarkBar::DONT_ANIMATE_STATE_CHANGE);
+        browser_->bookmark_bar_state(), BookmarkBar::DONT_ANIMATE_STATE_CHANGE);
   }
 
   infobar_container_->ChangeInfoBarManager(
@@ -1658,8 +1658,8 @@
   const AppMenuButton* app_menu_button =
       toolbar_button_provider()->GetAppMenuButton();
   bool app_menu_showing = app_menu_button && app_menu_button->IsMenuShowing();
-  toolbar_button_provider()
-      ->ZoomChangedForActiveTab(can_show_bubble && !app_menu_showing);
+  toolbar_button_provider()->ZoomChangedForActiveTab(can_show_bubble &&
+                                                     !app_menu_showing);
 }
 
 gfx::Rect BrowserView::GetRestoredBounds() const {
@@ -2219,6 +2219,13 @@
   side_panel_coordinator()->Show(entry_id, open_trigger);
 }
 
+void BrowserView::ShowChromeLabs() {
+  if (toolbar()->chrome_labs_button() &&
+      toolbar()->chrome_labs_button()->GetVisible()) {
+    toolbar()->chrome_labs_button()->GetChromeLabsCoordinator()->ShowOrHide();
+  }
+}
+
 bool BrowserView::AppUsesBorderlessMode() const {
   return browser()->app_controller() &&
          browser()->app_controller()->AppUsesBorderlessMode();
@@ -2643,8 +2650,8 @@
     return ShowTranslateBubbleResult::BROWSER_WINDOW_MINIMIZED;
 
   PageActionIconView* translate_icon =
-      toolbar_button_provider()
-          ->GetPageActionIconView(PageActionIconType::kTranslate);
+      toolbar_button_provider()->GetPageActionIconView(
+          PageActionIconType::kTranslate);
   TranslateBubbleController::GetOrCreate(web_contents)
       ->ShowTranslateBubble(toolbar_button_provider()->GetAnchorView(
                                 PageActionIconType::kTranslate),
@@ -3383,8 +3390,8 @@
       // its desired height, since the toolbar is considered part of the
       // window's client area as far as GetWindowBoundsForClientBounds is
       // concerned...
-      bounds->set_height(
-          bounds->height() + toolbar_->GetPreferredSize().height());
+      bounds->set_height(bounds->height() +
+                         toolbar_->GetPreferredSize().height());
     }
 
     gfx::Rect rect =
@@ -4072,8 +4079,7 @@
         std::make_unique<BookmarkBarView>(browser_.get(), this);
     bookmark_bar_view_->set_owned_by_client();
     bookmark_bar_view_->SetBookmarkBarState(
-        browser_->bookmark_bar_state(),
-        BookmarkBar::DONT_ANIMATE_STATE_CHANGE);
+        browser_->bookmark_bar_state(), BookmarkBar::DONT_ANIMATE_STATE_CHANGE);
     GetBrowserViewLayout()->set_bookmark_bar(bookmark_bar_view_.get());
   }
   // Don't change the visibility of the BookmarkBarView. BrowserViewLayout
@@ -4113,11 +4119,11 @@
   return true;
 }
 
-void BrowserView::UpdateDevToolsForContents(
-    WebContents* web_contents, bool update_devtools_web_contents) {
+void BrowserView::UpdateDevToolsForContents(WebContents* web_contents,
+                                            bool update_devtools_web_contents) {
   DevToolsContentsResizingStrategy strategy;
-  WebContents* devtools = DevToolsWindow::GetInTabWebContents(
-      web_contents, &strategy);
+  WebContents* devtools =
+      DevToolsWindow::GetInTabWebContents(web_contents, &strategy);
 
   if (!devtools_web_view_->web_contents() && devtools &&
       !devtools_focus_tracker_.get()) {
@@ -4364,27 +4370,43 @@
   switch (app_command_id) {
     // NOTE: The order here matches the APPCOMMAND declaration order in the
     // Windows headers.
-    case APPCOMMAND_BROWSER_BACKWARD: return IDC_BACK;
-    case APPCOMMAND_BROWSER_FORWARD:  return IDC_FORWARD;
-    case APPCOMMAND_BROWSER_REFRESH:  return IDC_RELOAD;
-    case APPCOMMAND_BROWSER_HOME:     return IDC_HOME;
-    case APPCOMMAND_BROWSER_STOP:     return IDC_STOP;
-    case APPCOMMAND_BROWSER_SEARCH:   return IDC_FOCUS_SEARCH;
-    case APPCOMMAND_HELP:             return IDC_HELP_PAGE_VIA_KEYBOARD;
-    case APPCOMMAND_NEW:              return IDC_NEW_TAB;
-    case APPCOMMAND_OPEN:             return IDC_OPEN_FILE;
-    case APPCOMMAND_CLOSE:            return IDC_CLOSE_TAB;
-    case APPCOMMAND_SAVE:             return IDC_SAVE_PAGE;
-    case APPCOMMAND_PRINT:            return IDC_PRINT;
-    case APPCOMMAND_COPY:             return IDC_COPY;
-    case APPCOMMAND_CUT:              return IDC_CUT;
-    case APPCOMMAND_PASTE:            return IDC_PASTE;
+    case APPCOMMAND_BROWSER_BACKWARD:
+      return IDC_BACK;
+    case APPCOMMAND_BROWSER_FORWARD:
+      return IDC_FORWARD;
+    case APPCOMMAND_BROWSER_REFRESH:
+      return IDC_RELOAD;
+    case APPCOMMAND_BROWSER_HOME:
+      return IDC_HOME;
+    case APPCOMMAND_BROWSER_STOP:
+      return IDC_STOP;
+    case APPCOMMAND_BROWSER_SEARCH:
+      return IDC_FOCUS_SEARCH;
+    case APPCOMMAND_HELP:
+      return IDC_HELP_PAGE_VIA_KEYBOARD;
+    case APPCOMMAND_NEW:
+      return IDC_NEW_TAB;
+    case APPCOMMAND_OPEN:
+      return IDC_OPEN_FILE;
+    case APPCOMMAND_CLOSE:
+      return IDC_CLOSE_TAB;
+    case APPCOMMAND_SAVE:
+      return IDC_SAVE_PAGE;
+    case APPCOMMAND_PRINT:
+      return IDC_PRINT;
+    case APPCOMMAND_COPY:
+      return IDC_COPY;
+    case APPCOMMAND_CUT:
+      return IDC_CUT;
+    case APPCOMMAND_PASTE:
+      return IDC_PASTE;
 
       // TODO(pkasting): http://b/1113069 Handle these.
     case APPCOMMAND_UNDO:
     case APPCOMMAND_REDO:
     case APPCOMMAND_SPELL_CHECK:
-    default:                          return -1;
+    default:
+      return -1;
   }
 #else
   // App commands are Windows-specific so there's nothing to do here.
@@ -4592,9 +4614,8 @@
       event_name);
 }
 
-bool BrowserView::DoCutCopyPasteForWebContents(
-    WebContents* contents,
-    void (WebContents::*method)()) {
+bool BrowserView::DoCutCopyPasteForWebContents(WebContents* contents,
+                                               void (WebContents::*method)()) {
   // It's possible for a non-null WebContents to have a null RWHV if it's
   // crashed or otherwise been killed.
   content::RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView();
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h
index c8ac187f..3e81238 100644
--- a/chrome/browser/ui/views/frame/browser_view.h
+++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -521,6 +521,7 @@
   void ShowSidePanel(
       absl::optional<SidePanelEntryId> entry_id,
       absl::optional<SidePanelOpenTrigger> open_trigger) override;
+  void ShowChromeLabs() override;
 
   SharingDialog* ShowSharingDialog(content::WebContents* contents,
                                    SharingDialogData data) override;
diff --git a/chrome/browser/ui/views/frame/tab_strip_region_view.cc b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
index 4b7cdb5..546c06ed 100644
--- a/chrome/browser/ui/views/frame/tab_strip_region_view.cc
+++ b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
@@ -20,7 +20,6 @@
 #include "chrome/browser/ui/views/tabs/tab_strip_scroll_container.h"
 #include "chrome/browser/ui/views/tabs/tab_style_views.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
-#include "chrome/browser/ui/views/user_education/tip_marquee_view.h"
 #include "chrome/grit/generated_resources.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/clipboard/clipboard_constants.h"
@@ -119,17 +118,6 @@
   const auto control_padding = gfx::Insets::TLBR(
       0, 0, 0, GetLayoutConstant(TABSTRIP_REGION_VIEW_CONTROL_PADDING));
 
-  tip_marquee_view_ = AddChildView(std::make_unique<TipMarqueeView>());
-  tip_marquee_view_->SetProperty(
-      views::kFlexBehaviorKey,
-      views::FlexSpecification(
-          views::LayoutOrientation::kHorizontal,
-          views::MinimumFlexSizeRule::kPreferredSnapToMinimum)
-          .WithOrder(2));
-  tip_marquee_view_->SetProperty(views::kCrossAxisAlignmentKey,
-                                 views::LayoutAlignment::kCenter);
-  tip_marquee_view_->SetProperty(views::kMarginsKey, control_padding);
-
   SetProperty(views::kElementIdentifierKey, kTabStripRegionElementId);
 
 #if BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/ui/views/frame/tab_strip_region_view.h b/chrome/browser/ui/views/frame/tab_strip_region_view.h
index 7c1270b..2dad820 100644
--- a/chrome/browser/ui/views/frame/tab_strip_region_view.h
+++ b/chrome/browser/ui/views/frame/tab_strip_region_view.h
@@ -18,7 +18,6 @@
 class NewTabButton;
 class TabSearchButton;
 class TabStrip;
-class TipMarqueeView;
 class TabStripScrollContainer;
 
 // Container for the tabstrip and the other views sharing space with it -
@@ -45,8 +44,6 @@
 
   TabSearchButton* tab_search_button() { return tab_search_button_; }
 
-  TipMarqueeView* tip_marquee_view() { return tip_marquee_view_; }
-
   views::View* reserved_grab_handle_space_for_testing() {
     return reserved_grab_handle_space_;
   }
@@ -87,7 +84,6 @@
       tab_strip_scroll_container_ = nullptr;
   raw_ptr<NewTabButton, DanglingUntriaged> new_tab_button_ = nullptr;
   raw_ptr<TabSearchButton, DanglingUntriaged> tab_search_button_ = nullptr;
-  raw_ptr<TipMarqueeView, DanglingUntriaged> tip_marquee_view_ = nullptr;
 
   const base::CallbackListSubscription subscription_ =
       ui::TouchUiController::Get()->RegisterCallback(
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index a284925..03d8766 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -1949,8 +1949,7 @@
       index, IDC_SEND_TAB_TO_SELF,
       l10n_util::GetStringUTF16(IDS_MENU_SEND_TAB_TO_SELF));
 #if !BUILDFLAG(IS_MAC)
-  menu_contents->SetIcon(
-      index, ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon));
+  menu_contents->SetIcon(index, ui::ImageModel::FromVectorIcon(kDevicesIcon));
 #endif
   menu_contents->InsertSeparatorAt(++index, ui::NORMAL_SEPARATOR);
 }
diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc
index 2fe9a3a..79c855a 100644
--- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc
+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc
@@ -352,9 +352,8 @@
                    : &vector_icons::kBluetoothScanningChromeRefreshIcon;
         break;
       case ContentSettingsType::FILE_SYSTEM_WRITE_GUARD:
-        icon = show_blocked_badge
-                   ? &vector_icons::kSaveOriginalFileOffChromeRefreshIcon
-                   : &vector_icons::kSaveOriginalFileChromeRefreshIcon;
+        icon = show_blocked_badge ? &kFileSaveOffChromeRefreshIcon
+                                  : &kFileSaveChromeRefreshIcon;
         break;
       case ContentSettingsType::VR:
         icon = show_blocked_badge
@@ -465,7 +464,7 @@
       icon = &vector_icons::kBluetoothScanningIcon;
       break;
     case ContentSettingsType::FILE_SYSTEM_WRITE_GUARD:
-      icon = &vector_icons::kSaveOriginalFileIcon;
+      icon = &kFileSaveIcon;
       break;
     case ContentSettingsType::VR:
     case ContentSettingsType::AR:
diff --git a/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc b/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
index bbc1ad5..6bf1a8c 100644
--- a/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
+++ b/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
@@ -12,6 +12,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ui/passwords/password_generation_popup_controller.h"
 #include "chrome/browser/ui/passwords/ui_utils.h"
+#include "chrome/browser/ui/views/accessibility/non_accessible_image_view.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/chrome_typography.h"
 #include "chrome/browser/ui/views/passwords/views_utils.h"
@@ -39,6 +40,7 @@
 #include "ui/views/controls/styled_label.h"
 #include "ui/views/layout/box_layout.h"
 #include "ui/views/layout/fill_layout.h"
+#include "ui/views/layout/flex_layout_view.h"
 #include "ui/views/widget/widget.h"
 
 namespace {
@@ -121,9 +123,66 @@
       return IDS_PASSWORD_GENERATION_HELP_TEXT_TRY_SOMETHING_NEW;
     case PasswordGenerationVariation::kConvenience:
       return IDS_PASSWORD_GENERATION_HELP_TEXT_CONVENIENCE;
+    case PasswordGenerationVariation::kCrossDevice:
+      return IDS_PASSWORD_GENERATION_HELP_TEXT;
   }
 }
 
+std::unique_ptr<views::FlexLayoutView> CreateLabelWithCheckIcon(
+    const std::u16string& label_text) {
+  auto label_with_icon = std::make_unique<views::FlexLayoutView>();
+
+  // TODO(crbug.com/1444070): Add correct check icon (without circle).
+  auto icon = std::make_unique<NonAccessibleImageView>();
+  icon->SetImage(ui::ImageModel::FromVectorIcon(
+      vector_icons::kCheckCircleIcon, ui::kColorIconSecondary, kIconSize));
+  label_with_icon->AddChildView(std::move(icon));
+
+  auto spacer = std::make_unique<views::View>();
+  spacer->SetPreferredSize(
+      gfx::Size(autofill::PopupBaseView::GetHorizontalPadding(), /*height=*/1));
+  label_with_icon->AddChildView(std::move(spacer));
+
+  label_with_icon->AddChildView(
+      std::make_unique<views::Label>(label_text, CONTEXT_DIALOG_BODY_TEXT_SMALL,
+                                     views::style::STYLE_SECONDARY));
+
+  return label_with_icon;
+}
+
+// Creates help text listing benefits of password generation in bullet points.
+std::unique_ptr<views::View> CreateCrossDeviceFooter(
+    const std::u16string& primary_account_email,
+    base::RepeatingClosure open_password_manager_closure) {
+  auto cross_device_footer = std::make_unique<views::View>();
+
+  auto* layout =
+      cross_device_footer->SetLayoutManager(std::make_unique<views::BoxLayout>(
+          views::BoxLayout::Orientation::kVertical));
+  layout->set_cross_axis_alignment(
+      views::BoxLayout::CrossAxisAlignment::kStart);
+
+  cross_device_footer->AddChildView(std::make_unique<views::Label>(
+      l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_BENEFITS),
+      CONTEXT_DIALOG_BODY_TEXT_SMALL, views::style::STYLE_SECONDARY));
+  cross_device_footer->AddChildView(CreateLabelWithCheckIcon(
+      l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_CROSS_DEVICE)));
+  cross_device_footer->AddChildView(CreateLabelWithCheckIcon(
+      l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_SECURITY)));
+  cross_device_footer->AddChildView(CreateLabelWithCheckIcon(
+      l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_PROACTIVE_CHECK)));
+
+  views::StyledLabel* help_label =
+      cross_device_footer->AddChildView(CreateGooglePasswordManagerLabel(
+          GetHelpTextMessageId(),
+          /*link_message_id=*/
+          IDS_PASSWORD_BUBBLES_PASSWORD_MANAGER_LINK_TEXT_SYNCED_TO_ACCOUNT,
+          primary_account_email, open_password_manager_closure));
+  help_label->SetDisplayedOnBackgroundColor(ui::kColorBubbleFooterBackground);
+
+  return cross_device_footer;
+}
+
 }  // namespace
 
 // Class that shows the generated password and associated UI (currently an
@@ -379,6 +438,15 @@
       },
       base::Unretained(this));
 
+  if (password_manager::features::kPasswordGenerationExperimentVariationParam
+          .Get() == PasswordGenerationVariation::kCrossDevice) {
+    auto* cross_device_footer = AddChildView(CreateCrossDeviceFooter(
+        controller_->GetPrimaryAccountEmail(), open_password_manager_closure));
+    cross_device_footer->SetBorder(views::CreateEmptyBorder(
+        gfx::Insets::VH(kVerticalPadding, kHorizontalMargin)));
+    return;
+  }
+
   views::StyledLabel* help_label =
       AddChildView(CreateGooglePasswordManagerLabel(
           GetHelpTextMessageId(),
diff --git a/chrome/browser/ui/views/permissions/permission_request_chip_browsertest.cc b/chrome/browser/ui/views/permissions/permission_request_chip_browsertest.cc
index 96e402d..ffb7014 100644
--- a/chrome/browser/ui/views/permissions/permission_request_chip_browsertest.cc
+++ b/chrome/browser/ui/views/permissions/permission_request_chip_browsertest.cc
@@ -372,16 +372,11 @@
     if (!chip)
       return false;
 
-// TODO(olesiamrukhno): VerifyPixelUi works only for these platforms, revise
-// this if supported platforms change.
-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
     auto* test_info = testing::UnitTest::GetInstance()->current_test_info();
     const std::string screenshot_name =
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
-    return VerifyPixelUi(chip, "BrowserUi", screenshot_name);
-#else
-    return true;
-#endif
+    return VerifyPixelUi(chip, "BrowserUi", screenshot_name) !=
+           ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {
diff --git a/chrome/browser/ui/views/profiles/enterprise_profile_welcome_ui_browsertest.cc b/chrome/browser/ui/views/profiles/enterprise_profile_welcome_ui_browsertest.cc
index 3997a35..334a4fc 100644
--- a/chrome/browser/ui/views/profiles/enterprise_profile_welcome_ui_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/enterprise_profile_welcome_ui_browsertest.cc
@@ -179,7 +179,7 @@
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
 
     return VerifyPixelUi(widget, "EnterpriseWelcomeUIWindowPixelTest",
-                         screenshot_name);
+                         screenshot_name) != ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {
diff --git a/chrome/browser/ui/views/profiles/first_run_intro_browsertest.cc b/chrome/browser/ui/views/profiles/first_run_intro_browsertest.cc
index 6904b25..fea6fac 100644
--- a/chrome/browser/ui/views/profiles/first_run_intro_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/first_run_intro_browsertest.cc
@@ -122,7 +122,8 @@
     const std::string screenshot_name =
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
 
-    return VerifyPixelUi(widget, "FirstRunIntroPixelTest", screenshot_name);
+    return VerifyPixelUi(widget, "FirstRunIntroPixelTest", screenshot_name) !=
+           ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {
diff --git a/chrome/browser/ui/views/profiles/profile_picker_ui_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_ui_browsertest.cc
index 37193e5..c7bb012 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_ui_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_ui_browsertest.cc
@@ -121,7 +121,8 @@
     const std::string screenshot_name =
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
 
-    return VerifyPixelUi(widget, "ProfilePickerUIPixelTest", screenshot_name);
+    return VerifyPixelUi(widget, "ProfilePickerUIPixelTest", screenshot_name) !=
+           ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {
diff --git a/chrome/browser/ui/views/profiles/profile_type_choice_ui_browsertest.cc b/chrome/browser/ui/views/profiles/profile_type_choice_ui_browsertest.cc
index 1b4226f..b0455bf8a 100644
--- a/chrome/browser/ui/views/profiles/profile_type_choice_ui_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/profile_type_choice_ui_browsertest.cc
@@ -115,7 +115,7 @@
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
 
     return VerifyPixelUi(widget, "ProfileTypeChoiceUIPixelTest",
-                         screenshot_name);
+                         screenshot_name) != ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {
diff --git a/chrome/browser/ui/views/profiles/sync_confirmation_ui_browsertest.cc b/chrome/browser/ui/views/profiles/sync_confirmation_ui_browsertest.cc
index 028d6fa..1dd4d59 100644
--- a/chrome/browser/ui/views/profiles/sync_confirmation_ui_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/sync_confirmation_ui_browsertest.cc
@@ -184,7 +184,7 @@
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
 
     return VerifyPixelUi(widget, "SyncConfirmationUIWindowPixelTest",
-                         screenshot_name);
+                         screenshot_name) != ui::test::ActionResult::kFailed;
   }
 
   void WaitForUserDismissal() override {
diff --git a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc
index eb1ab65..444969d9 100644
--- a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc
+++ b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc
@@ -110,7 +110,7 @@
     PageActionIconView::ExecuteSource execute_source) {}
 
 const gfx::VectorIcon& SendTabToSelfIconView::GetVectorIcon() const {
-  return kLaptopAndSmartphoneIcon;
+  return kDevicesIcon;
 }
 
 SendTabToSelfBubbleController* SendTabToSelfIconView::GetController() const {
diff --git a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc
index 6b152ad..4f6b969 100644
--- a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc
+++ b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc
@@ -26,12 +26,11 @@
 
 SendTabToSelfToolbarIconView::SendTabToSelfToolbarIconView(
     BrowserView* browser_view)
-    : ImageView(ui::ImageModel::FromVectorIcon(
-          features::IsChromeRefresh2023()
-              ? kLaptopAndSmartphoneChromeRefreshIcon
-              : kLaptopAndSmartphoneIcon,
-          ui::kColorIcon,
-          gfx::kFaviconSize)),
+    : ImageView(ui::ImageModel::FromVectorIcon(features::IsChromeRefresh2023()
+                                                   ? kDevicesChromeRefreshIcon
+                                                   : kDevicesIcon,
+                                               ui::kColorIcon,
+                                               gfx::kFaviconSize)),
       browser_(browser_view->browser()),
       browser_view_(browser_view) {
   SetAccessibleName(l10n_util::GetStringUTF16(
diff --git a/chrome/browser/ui/views/side_panel/search_companion/companion_page_browsertest.cc b/chrome/browser/ui/views/side_panel/search_companion/companion_page_browsertest.cc
index de2b25d..d25002dc 100644
--- a/chrome/browser/ui/views/side_panel/search_companion/companion_page_browsertest.cc
+++ b/chrome/browser/ui/views/side_panel/search_companion/companion_page_browsertest.cc
@@ -12,6 +12,7 @@
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "build/buildflag.h"
 #include "chrome/browser/companion/core/companion_metrics_logger.h"
 #include "chrome/browser/companion/core/constants.h"
 #include "chrome/browser/companion/core/features.h"
@@ -68,6 +69,8 @@
 const char kHost[] = "foo.com";
 const char kSearchQueryUrl[] = "https://www.google.com/search?q=xyz";
 
+const char kExpectedExpsPromoUrl[] = "https://foobar.com/";
+
 }  // namespace
 
 // Helper class to generate a script that sends a postmessage to the browser
@@ -80,6 +83,7 @@
   // to the postmessage.
   absl::optional<PromoType> promo_type;
   absl::optional<PromoAction> promo_action;
+  absl::optional<std::string> exps_promo_url;
   absl::optional<bool> is_exps_opted_in;
   absl::optional<UiSurface> ui_surface;
   absl::optional<int> ui_surface_position;
@@ -116,6 +120,10 @@
          << ";";
     }
 
+    if (exps_promo_url.has_value()) {
+      ss << "message['expsPromoUrl'] = '" << exps_promo_url.value() << "';";
+    }
+
     if (is_exps_opted_in.has_value()) {
       ss << "message['isExpsOptedIn'] = "
          << base::NumberToString(is_exps_opted_in.value()) << ";";
@@ -345,6 +353,12 @@
         companion::features::kSidePanelCompanion, params);
   }
 
+  void WaitForTabCount(int expected) {
+    while (browser()->tab_strip_model()->count() != expected) {
+      base::RunLoop().RunUntilIdle();
+    }
+  }
+
   void WaitForHistogram(const std::string& histogram_name) {
     // Continue if histogram was already recorded.
     if (base::StatisticsRecorder::FindHistogram(histogram_name)) {
@@ -706,6 +720,67 @@
                  static_cast<int>(companion::PromoEvent::kMsbbRejected));
 }
 
+IN_PROC_BROWSER_TEST_F(CompanionPageBrowserTest, ExpsPromoURLLoadsInNewTab) {
+  ukm::TestAutoSetUkmRecorder ukm_recorder;
+  // Load a page on the active tab.
+  ASSERT_TRUE(
+      ui_test_utils::NavigateToURL(browser(), CreateUrl(kHost, kRelativeUrl1)));
+  ASSERT_EQ(side_panel_coordinator()->GetCurrentEntryId(), absl::nullopt);
+
+  EXPECT_EQ(1, browser()->tab_strip_model()->count());
+
+  // Open companion companion via toolbar entry point.
+  side_panel_coordinator()->Show(SidePanelEntry::Id::kSearchCompanion);
+  EXPECT_TRUE(side_panel_coordinator()->IsSidePanelShowing());
+
+  WaitForCompanionToBeLoaded();
+  EXPECT_EQ(side_panel_coordinator()->GetCurrentEntryId(),
+            SidePanelEntry::Id::kSearchCompanion);
+
+  // Show exps promo, user accepts it.
+  CompanionScriptBuilder builder(MethodType::kOnPromoAction);
+  builder.promo_type = PromoType::kExps;
+  builder.promo_action = PromoAction::kAccepted;
+  builder.exps_promo_url = kExpectedExpsPromoUrl;
+  EXPECT_TRUE(ExecJs(builder.Build()));
+
+  // Verify that a new tab opens up to load the exps URL.
+  WaitForTabCount(2);
+  EXPECT_TRUE(web_contents()->GetVisibleURL().spec().starts_with(
+      kExpectedExpsPromoUrl));
+}
+
+#if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+IN_PROC_BROWSER_TEST_F(CompanionPageBrowserTest, SigninLoadsInNewTab) {
+  ukm::TestAutoSetUkmRecorder ukm_recorder;
+  // Load a page on the active tab.
+  ASSERT_TRUE(
+      ui_test_utils::NavigateToURL(browser(), CreateUrl(kHost, kRelativeUrl1)));
+  ASSERT_EQ(side_panel_coordinator()->GetCurrentEntryId(), absl::nullopt);
+
+  EXPECT_EQ(1, browser()->tab_strip_model()->count());
+
+  // Open companion companion via toolbar entry point.
+  side_panel_coordinator()->Show(SidePanelEntry::Id::kSearchCompanion);
+  EXPECT_TRUE(side_panel_coordinator()->IsSidePanelShowing());
+
+  WaitForCompanionToBeLoaded();
+  EXPECT_EQ(side_panel_coordinator()->GetCurrentEntryId(),
+            SidePanelEntry::Id::kSearchCompanion);
+
+  // Show sign-in promo, user accepts it.
+  CompanionScriptBuilder builder(MethodType::kOnPromoAction);
+  builder.promo_type = PromoType::kSignin;
+  builder.promo_action = PromoAction::kAccepted;
+  EXPECT_TRUE(ExecJs(builder.Build()));
+
+  // Verify that a new tab opens up to load the sign-in URL.
+  WaitForTabCount(2);
+  EXPECT_TRUE(web_contents()->GetVisibleURL().spec().starts_with(
+      "https://accounts.google.com/signin/chrome/sync"));
+}
+#endif
+
 IN_PROC_BROWSER_TEST_F(CompanionPageBrowserTest, RegionSearchClick) {
   ukm::TestAutoSetUkmRecorder ukm_recorder;
 
diff --git a/chrome/browser/ui/views/tabs/fade_label_view.cc b/chrome/browser/ui/views/tabs/fade_label_view.cc
index 2520738..0d41ecc6 100644
--- a/chrome/browser/ui/views/tabs/fade_label_view.cc
+++ b/chrome/browser/ui/views/tabs/fade_label_view.cc
@@ -21,7 +21,7 @@
 void FadeLabel::SetData(const FadeLabelViewData& data) {
   data_ = data;
   std::u16string text = data.text;
-  absl::optional<bool> is_filename = data.is_filename;
+  const bool is_filename = data.is_filename;
   SetElideBehavior(is_filename ? gfx::NO_ELIDE : gfx::ELIDE_TAIL);
   if (is_filename) {
     text = TruncateFilenameToTwoLines(text);
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc
index 5fe583ca..a439f91 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_browsertest.cc
@@ -7,10 +7,10 @@
 #include "chrome/browser/about_flags.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/test/test_browser_dialog.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "components/flags_ui/feature_entry_macros.h"
 #include "components/version_info/channel.h"
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc
index 3209c04..e9de43f 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc
@@ -13,9 +13,9 @@
 #include "chrome/browser/about_flags.h"
 #include "chrome/browser/flag_descriptions.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_item_view.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/webui/flags/flags_ui.h"
 #include "chrome/grit/generated_resources.h"
 #include "chrome/grit/google_chrome_strings.h"
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_button.cc b/chrome/browser/ui/views/toolbar/chrome_labs_button.cc
index f001bdf57..ca4c0f3 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_button.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_button.cc
@@ -11,10 +11,10 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/webui/flags/flags_ui.h"
 #include "chrome/grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -24,14 +24,6 @@
 #include "ui/views/controls/button/button_controller.h"
 #include "ui/views/controls/dot_indicator.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "ash/constants/ash_switches.h"
-#include "base/system/sys_info.h"
-#include "chrome/browser/ash/ownership/owner_settings_service_ash.h"
-#include "chrome/browser/ash/ownership/owner_settings_service_ash_factory.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
-#endif
-
 ChromeLabsButton::ChromeLabsButton(BrowserView* browser_view,
                                    const ChromeLabsModel* model)
     : ToolbarButton(base::BindRepeating(&ChromeLabsButton::ButtonPressed,
@@ -73,76 +65,12 @@
 }
 
 void ChromeLabsButton::ButtonPressed() {
-  // On Chrome OS if we are still waiting for IsOwnerAsync to return abort
-  // button clicks.
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  if (is_waiting_to_show_) {
-    return;
-  }
-#endif
-
-  if (chrome_labs_coordinator_->BubbleExists()) {
-    chrome_labs_coordinator_->Hide();
-    return;
-  }
-
-  // Ash-chrome uses a different FlagsStorage if the user is the owner. On
-  // ChromeOS verifying if the owner is signed in is async operation.
-  // Asynchronously check if the user is the owner and show the Chrome Labs
-  // bubble only after we have this information.
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  // Bypass possible incognito profile same as chrome://flags does.
-  Profile* original_profile =
-      browser_view_->browser()->profile()->GetOriginalProfile();
-  if ((base::SysInfo::IsRunningOnChromeOS() ||
-       should_circumvent_device_check_for_testing_) &&
-      ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(
-          original_profile)) {
-    ash::OwnerSettingsServiceAsh* service =
-        ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(
-            original_profile);
-    is_waiting_to_show_ = true;
-    service->IsOwnerAsync(base::BindOnce(
-        [](ChromeLabsButton* button, base::WeakPtr<BrowserView> browser_view,
-           ChromeLabsCoordinator* coordinator, bool is_owner) {
-          // BrowserView may have been destroyed before async function returns
-          if (!browser_view)
-            return;
-          is_owner
-              ? coordinator->Show(
-                    ChromeLabsCoordinator::ShowUserType::kChromeOsOwnerUserType)
-              : coordinator->Show();
-          button->is_waiting_to_show_ = false;
-        },
-        this, browser_view_->GetAsWeakPtr(), chrome_labs_coordinator_.get()));
-    return;
-  }
-#endif
-  chrome_labs_coordinator_->Show();
+  chrome_labs_coordinator_->ShowOrHide();
 }
 
 void ChromeLabsButton::UpdateDotIndicator() {
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  ScopedDictPrefUpdate update(
-      browser_view_->browser()->profile()->GetPrefs(),
-      chrome_labs_prefs::kChromeLabsNewBadgeDictAshChrome);
-#else
-  ScopedDictPrefUpdate update(g_browser_process->local_state(),
-                              chrome_labs_prefs::kChromeLabsNewBadgeDict);
-#endif
-
-  base::Value::Dict& new_badge_prefs = update.Get();
-
-  std::vector<std::string> lab_internal_names;
-  const std::vector<LabInfo>& all_labs = model_->GetLabInfo();
-
-  bool should_show_dot_indicator = base::ranges::any_of(
-      all_labs.begin(), all_labs.end(), [&new_badge_prefs](const LabInfo& lab) {
-        absl::optional<int> new_badge_pref_value =
-            new_badge_prefs.FindInt(lab.internal_name);
-        // Show the dot indicator if new experiments have not been seen yet.
-        return new_badge_pref_value == chrome_labs_prefs::kChromeLabsNewExperimentPrefValue;
-      });
+  bool should_show_dot_indicator = AreNewChromeLabsExperimentsAvailable(
+      model_, browser_view_->browser()->profile());
 
   if (should_show_dot_indicator)
     new_experiments_indicator_->Show();
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_button.h b/chrome/browser/ui/views/toolbar/chrome_labs_button.h
index 4a43def..3f7fb47 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_button.h
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_button.h
@@ -7,8 +7,8 @@
 
 #include "base/memory/raw_ptr.h"
 #include "build/chromeos_buildflags.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
 #include "ui/base/metadata/metadata_header_macros.h"
 #include "ui/views/controls/dot_indicator.h"
@@ -29,34 +29,21 @@
 
   void HideDotIndicator();
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-
-  void SetShouldCircumventDeviceCheckForTesting(bool should_circumvent) {
-    should_circumvent_device_check_for_testing_ = should_circumvent;
-  }
-#endif
+  void ButtonPressed();
 
   bool GetDotIndicatorVisibilityForTesting() const {
     return new_experiments_indicator_->GetVisible();
   }
 
-  ChromeLabsCoordinator* GetChromeLabsCoordinatorForTesting() {
+  ChromeLabsCoordinator* GetChromeLabsCoordinator() {
     return chrome_labs_coordinator_.get();
   }
 
  private:
-  void ButtonPressed();
-
   void UpdateDotIndicator();
 
   raw_ptr<BrowserView, DanglingUntriaged> browser_view_;
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  bool is_waiting_to_show_ = false;
-  // Used to circumvent the IsRunningOnChromeOS() check in ash-chrome tests.
-  bool should_circumvent_device_check_for_testing_ = false;
-#endif
-
   raw_ptr<const ChromeLabsModel, DanglingUntriaged> model_;
 
   raw_ptr<views::DotIndicator> new_experiments_indicator_;
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
index 86c236c8..a1837cf 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_button_unittest.cc
@@ -7,12 +7,12 @@
 #include "base/memory/raw_ptr.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/about_flags.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/frame/test_with_browser_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/unexpire_flags.h"
 #include "components/flags_ui/feature_entry_macros.h"
@@ -96,13 +96,13 @@
 TEST_F(ChromeLabsButtonTest, ShowAndHideChromeLabsBubbleOnPress) {
   ChromeLabsButton* labs_button =
       browser_view()->toolbar()->chrome_labs_button();
-  ChromeLabsCoordinator* coordinator =
-      labs_button->GetChromeLabsCoordinatorForTesting();
+  ChromeLabsCoordinator* coordinator = labs_button->GetChromeLabsCoordinator();
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   ash::OwnerSettingsServiceAsh* service_ =
       ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(GetProfile());
-  labs_button->SetShouldCircumventDeviceCheckForTesting(true);
+  labs_button->GetChromeLabsCoordinator()
+      ->SetShouldCircumventDeviceCheckForTesting(true);
 #endif
 
   EXPECT_FALSE(coordinator->BubbleExists());
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.cc b/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.cc
index 30a105d..dcde2fdc 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_view_controller.h"
@@ -17,6 +18,8 @@
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "ash/constants/ash_switches.h"
+#include "base/system/sys_info.h"
 #include "chrome/browser/ash/ownership/owner_settings_service_ash.h"
 #include "chrome/browser/ash/ownership/owner_settings_service_ash_factory.h"
 #include "chrome/browser/ash/settings/about_flags.h"
@@ -41,7 +44,6 @@
 
 void ChromeLabsCoordinator::Show(ShowUserType user_type) {
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-
   // Bypass possible incognito profile same as chrome://flags does.
   Profile* original_profile = browser_->profile()->GetOriginalProfile();
   if (user_type == ShowUserType::kChromeOsOwnerUserType) {
@@ -94,6 +96,50 @@
   }
 }
 
+void ChromeLabsCoordinator::ShowOrHide() {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  if (is_waiting_to_show_) {
+    return;
+  }
+#endif
+  if (BubbleExists()) {
+    Hide();
+  }
+  // Ash-chrome uses a different FlagsStorage if the user is the owner. On
+  // ChromeOS verifying if the owner is signed in is async operation.
+  // Asynchronously check if the user is the owner and show the Chrome Labs
+  // bubble only after we have this information.
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  // Bypass possible incognito profile same as chrome://flags does.
+  Profile* original_profile = browser_->profile()->GetOriginalProfile();
+  if ((base::SysInfo::IsRunningOnChromeOS() ||
+       should_circumvent_device_check_for_testing_) &&
+      ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(
+          original_profile)) {
+    ash::OwnerSettingsServiceAsh* service =
+        ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(
+            original_profile);
+    is_waiting_to_show_ = true;
+    service->IsOwnerAsync(base::BindOnce(
+        [](base::WeakPtr<BrowserView> browser_view,
+           ChromeLabsCoordinator* coordinator, bool is_owner) {
+          // BrowserView may have been destroyed before async function returns
+          if (!browser_view) {
+            return;
+          }
+          is_owner
+              ? coordinator->Show(
+                    ChromeLabsCoordinator::ShowUserType::kChromeOsOwnerUserType)
+              : coordinator->Show();
+          coordinator->is_waiting_to_show_ = false;
+        },
+        BrowserView::GetBrowserViewForBrowser(browser_)->GetAsWeakPtr(), this));
+    return;
+  }
+#endif
+  Show();
+}
+
 void ChromeLabsCoordinator::OnViewIsDeleting(views::View* observed_view) {
   chrome_labs_bubble_view_ = nullptr;
 }
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h b/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h
index 0f3c75b..d21836d 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h
@@ -6,7 +6,9 @@
 #define CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_COORDINATOR_H_
 
 #include "base/memory/raw_ptr.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
+#include "build/buildflag.h"
+#include "build/chromeos_buildflags.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "components/flags_ui/flags_state.h"
 #include "components/flags_ui/flags_storage.h"
 #include "ui/views/view_observer.h"
@@ -26,7 +28,8 @@
     kChromeOsOwnerUserType,
   };
 
-  ChromeLabsCoordinator(ChromeLabsButton* anchor_view, Browser* browser,
+  ChromeLabsCoordinator(ChromeLabsButton* anchor_view,
+                        Browser* browser,
                         const ChromeLabsModel* model);
   ~ChromeLabsCoordinator() override;
 
@@ -36,6 +39,9 @@
 
   void Hide();
 
+  // Toggles the visibility of the bubble.
+  void ShowOrHide();
+
   ChromeLabsBubbleView* GetChromeLabsBubbleViewForTesting() {
     return chrome_labs_bubble_view_;
   }
@@ -46,6 +52,12 @@
     return controller_.get();
   }
 
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  void SetShouldCircumventDeviceCheckForTesting(bool should_circumvent) {
+    should_circumvent_device_check_for_testing_ = should_circumvent;
+  }
+#endif
+
  private:
   // views::ViewObserver
   void OnViewIsDeleting(views::View* observed_view) override;
@@ -59,6 +71,10 @@
   std::unique_ptr<flags_ui::FlagsStorage> flags_storage_;
   raw_ptr<flags_ui::FlagsState> flags_state_;
   std::unique_ptr<ChromeLabsViewController> controller_;
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  bool is_waiting_to_show_ = false;
+  bool should_circumvent_device_check_for_testing_ = false;
+#endif
 };
 
 #endif  // CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_COORDINATOR_H_
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc b/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc
index d02f6e5..415f6b6 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc
@@ -11,9 +11,9 @@
 #include "chrome/browser/flag_descriptions.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/chrome_pages.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/chrome_typography.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/flags_ui/feature_entry.h"
 #include "components/user_education/views/new_badge_label.h"
@@ -161,16 +161,16 @@
   if (!lab.visible_name.empty())
     GetViewAccessibility().OverrideName(lab.visible_name);
 
-  // There is currently a MacOS VoiceOver screen reader bug where VoiceOver does
-  // not announce the accessible description for groups (crbug.com/1197159). The
-  // MacOS specific code here provides a temporary mitigation for screen reader
-  // users and moves announcing the description to when the user interacts with
-  // the combobox of that experiment. Don’t add an accessible description for
-  // now to prevent the screen reader from announcing the description twice in
-  // the time between when the VoiceOver bug is fixed and this code gets
-  // removed.
-  // TODO(elainechien): Remove MacOS specific code for experiment description
-  // when VoiceOver bug is fixed.
+    // There is currently a MacOS VoiceOver screen reader bug where VoiceOver
+    // does not announce the accessible description for groups
+    // (crbug.com/1197159). The MacOS specific code here provides a temporary
+    // mitigation for screen reader users and moves announcing the description
+    // to when the user interacts with the combobox of that experiment. Don’t
+    // add an accessible description for now to prevent the screen reader from
+    // announcing the description twice in the time between when the VoiceOver
+    // bug is fixed and this code gets removed.
+    // TODO(elainechien): Remove MacOS specific code for experiment description
+    // when VoiceOver bug is fixed.
 
 #if !BUILDFLAG(IS_MAC)
   if (!lab.visible_description.empty())
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs_unittest.cc
index a3a743c2..ffe451a 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_unittest.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_unittest.cc
@@ -9,7 +9,9 @@
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "chrome/browser/about_flags.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/frame/test_with_browser_view.h"
@@ -17,8 +19,6 @@
 #include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_coordinator.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_item_view.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_view_controller.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/unexpire_flags.h"
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_view_controller.cc b/chrome/browser/ui/views/toolbar/chrome_labs_view_controller.cc
index f248ee9..c9712ce 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_view_controller.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_view_controller.cc
@@ -21,11 +21,11 @@
 #include "chrome/browser/flag_descriptions.h"
 #include "chrome/browser/lifetime/application_lifetime.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_item_view.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_utils.h"
 #include "chrome/common/buildflags.h"
 #include "components/flags_ui/feature_entry.h"
 #include "components/flags_ui/flags_state.h"
@@ -105,8 +105,10 @@
 }  // namespace
 
 ChromeLabsViewController::ChromeLabsViewController(
-    const ChromeLabsModel* model, ChromeLabsBubbleView* chrome_labs_bubble_view,
-    Browser* browser, flags_ui::FlagsState* flags_state,
+    const ChromeLabsModel* model,
+    ChromeLabsBubbleView* chrome_labs_bubble_view,
+    Browser* browser,
+    flags_ui::FlagsState* flags_state,
     flags_ui::FlagsStorage* flags_storage)
     : model_(model),
       chrome_labs_bubble_view_(chrome_labs_bubble_view),
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index 1f92f101..4682fa0 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -41,7 +41,9 @@
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/side_search/side_search_utils.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/view_ids.h"
 #include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h"
@@ -67,8 +69,6 @@
 #include "chrome/browser/ui/views/toolbar/back_forward_button.h"
 #include "chrome/browser/ui/views/toolbar/browser_app_menu_button.h"
 #include "chrome/browser/ui/views/toolbar/chrome_labs_button.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_utils.h"
 #include "chrome/browser/ui/views/toolbar/home_button.h"
 #include "chrome/browser/ui/views/toolbar/reload_button.h"
 #include "chrome/browser/ui/views/toolbar/side_panel_toolbar_button.h"
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h
index 42165ce8..c38f2b0 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -15,13 +15,13 @@
 #include "chrome/browser/ui/page_action/page_action_icon_type.h"
 #include "chrome/browser/ui/toolbar/app_menu_icon_controller.h"
 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h"
+#include "chrome/browser/ui/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/frame/browser_root_view.h"
 #include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
 #include "chrome/browser/ui/views/intent_picker_bubble_view.h"
 #include "chrome/browser/ui/views/location_bar/custom_tab_bar_view.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/profiles/avatar_toolbar_button.h"
-#include "chrome/browser/ui/views/toolbar/chrome_labs_model.h"
 #include "chrome/browser/ui/views/toolbar/side_panel_toolbar_button.h"
 #include "components/prefs/pref_member.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/chrome/browser/ui/views/user_education/tip_marquee_view.cc b/chrome/browser/ui/views/user_education/tip_marquee_view.cc
deleted file mode 100644
index 37289154..0000000
--- a/chrome/browser/ui/views/user_education/tip_marquee_view.cc
+++ /dev/null
@@ -1,370 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/views/user_education/tip_marquee_view.h"
-
-#include <memory>
-
-#include "base/command_line.h"
-#include "base/functional/bind.h"
-#include "base/memory/raw_ptr.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/resources_util.h"
-#include "chrome/grit/theme_resources.h"
-#include "components/strings/grit/components_strings.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/metadata/metadata_header_macros.h"
-#include "ui/base/metadata/metadata_impl_macros.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/theme_provider.h"
-#include "ui/gfx/geometry/insets.h"
-#include "ui/gfx/paint_vector_icon.h"
-#include "ui/gfx/text_constants.h"
-#include "ui/views/background.h"
-#include "ui/views/border.h"
-#include "ui/views/bubble/bubble_border.h"
-#include "ui/views/bubble/bubble_dialog_delegate_view.h"
-#include "ui/views/controls/button/md_text_button.h"
-#include "ui/views/controls/styled_label.h"
-#include "ui/views/layout/fill_layout.h"
-#include "ui/views/layout/flex_layout.h"
-#include "ui/views/layout/flex_layout_types.h"
-#include "ui/views/layout/layout_types.h"
-#include "ui/views/style/typography.h"
-#include "ui/views/view_class_properties.h"
-
-namespace {
-
-constexpr char16_t kTipMarqueeViewSeparator[] = u" - ";
-
-// TODO(crbug.com/1171654): move to localized strings when out of tech demo mode
-constexpr char16_t kTipMarqueeViewGotIt[] = u"Got it";
-constexpr char16_t kTipMarqueeViewClickToHideTip[] = u"Click to hide tip";
-constexpr char16_t kTipMarqueeViewClickToShowTip[] = u"Click to show tip";
-constexpr char16_t kTipMarqueeViewClickToLearnMore[] = u"Click to learn more";
-
-// ------------------------------------------------------------------
-// TODO(crbug.com/1171654): remove the entire section below before this code
-// ships, once the UX demo is over.
-//
-// This section provides the ability to show a demo tip marquee on startup with
-// placeholder text, for UX evaluation only. This code should be removed before
-// beta roll.
-//
-// Valid command-line arguments are:
-//  --tip-marquee-view-test=simple
-//      Displays a tip with no "learn more" link
-//  --tip-marquee-view-test=learn-more
-//      Displays a tip with a "learn more" link that displays a sample bubble
-//
-constexpr char kTipMarqueeViewTestSwitch[] = "tip-marquee-view-test";
-constexpr char kTipMarqueeViewTestTypeSimple[] = "simple";
-constexpr char kTipMarqueeViewTestTypeLearnMore[] = "learn-more";
-constexpr char16_t kTipMarqueeViewTestTitleText[] = u"Lorem Ipsum";
-constexpr char16_t kTipMarqueeViewTestText[] =
-    u"Lorem ipsum dolor sit amet consectetur";
-constexpr char16_t kTipMarqueeViewTestBodyText[] =
-    u"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-    u"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim "
-    u"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea "
-    u"commodo consequat.";
-
-class TestTipMarqueeViewLearnMoreBubble
-    : public views::BubbleDialogDelegateView {
- public:
-  explicit TestTipMarqueeViewLearnMoreBubble(TipMarqueeView* marquee)
-      : BubbleDialogDelegateView(marquee, views::BubbleBorder::TOP_LEFT),
-        marquee_(marquee) {
-    SetButtons(ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
-    SetButtonLabel(ui::DIALOG_BUTTON_OK, kTipMarqueeViewGotIt);
-    SetButtonLabel(ui::DIALOG_BUTTON_CANCEL,
-                   l10n_util::GetStringUTF16(IDS_CLOSE));
-    SetAcceptCallback(base::BindOnce(
-        &TestTipMarqueeViewLearnMoreBubble::OnAccept, base::Unretained(this)));
-    set_close_on_deactivate(true);
-    SetOwnedByWidget(true);
-
-    auto* const layout =
-        SetLayoutManager(std::make_unique<views::FlexLayout>());
-    layout->SetOrientation(views::LayoutOrientation::kHorizontal);
-    layout->SetCrossAxisAlignment(views::LayoutAlignment::kStart);
-    layout->SetInteriorMargin(gfx::Insets::TLBR(10, 0, 0, 0));
-    views::View* const placeholder_image =
-        AddChildView(std::make_unique<views::View>());
-    placeholder_image->SetPreferredSize(gfx::Size(150, 175));
-    // In real UI, we wouldn't use kColorMidground directly, but rather create
-    // a new color ID mapped to it (or similar).
-    placeholder_image->SetBackground(
-        views::CreateThemedSolidBackground(ui::kColorMidground));
-
-    views::View* const rhs_view = AddChildView(std::make_unique<views::View>());
-    auto* const rhs_layout =
-        rhs_view->SetLayoutManager(std::make_unique<views::FlexLayout>());
-    rhs_layout->SetOrientation(views::LayoutOrientation::kVertical);
-    rhs_layout->SetCrossAxisAlignment(views::LayoutAlignment::kStart);
-    rhs_layout->SetInteriorMargin(gfx::Insets::TLBR(0, 16, 0, 0));
-
-    auto* const title_text =
-        rhs_view->AddChildView(std::make_unique<views::Label>(
-            kTipMarqueeViewTestTitleText, views::style::CONTEXT_DIALOG_TITLE));
-    title_text->SetProperty(views::kMarginsKey, gfx::Insets::TLBR(6, 0, 10, 0));
-
-    auto* const body_text = rhs_view->AddChildView(
-        std::make_unique<views::Label>(kTipMarqueeViewTestBodyText,
-                                       views::style::CONTEXT_DIALOG_BODY_TEXT));
-    body_text->SetMultiLine(true);
-    body_text->SetMaximumWidth(250);
-    body_text->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
-  }
-
- private:
-  void OnAccept() { marquee_->ClearAndHideTip(); }
-
-  const raw_ptr<TipMarqueeView> marquee_;
-};
-
-void ShowTestTipMarqueeViewLearnMoreBubble(TipMarqueeView* marquee) {
-  views::BubbleDialogDelegateView::CreateBubble(
-      std::make_unique<TestTipMarqueeViewLearnMoreBubble>(marquee))
-      ->Show();
-}
-
-void MaybeShowTestTipMarqueeView(TipMarqueeView* marquee) {
-  base::CommandLine* const command_line =
-      base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(kTipMarqueeViewTestSwitch)) {
-    const std::string test_type =
-        command_line->GetSwitchValueASCII(kTipMarqueeViewTestSwitch);
-    if (test_type == kTipMarqueeViewTestTypeSimple) {
-      marquee->SetAndShowTip(kTipMarqueeViewTestText);
-    } else if (test_type == kTipMarqueeViewTestTypeLearnMore) {
-      marquee->SetAndShowTip(
-          kTipMarqueeViewTestText,
-          base::BindRepeating(&ShowTestTipMarqueeViewLearnMoreBubble));
-    } else {
-      LOG(WARNING) << "Invalid switch value: --" << kTipMarqueeViewTestSwitch
-                   << "=" << test_type;
-    }
-  }
-}
-
-// TODO(crbug.com/1171654): remove the entire section above before this code
-// ships, once the UX demo is over.
-// ------------------------------------------------------------------
-
-// The width of the multiline text display in the overflow bubble.
-constexpr int kTipMarqueeViewOverflowTextWidth = 250;
-
-class TipMarqueeOverflowBubbleView : public views::BubbleDialogDelegateView {
- public:
-  METADATA_HEADER(TipMarqueeOverflowBubbleView);
-  TipMarqueeOverflowBubbleView(TipMarqueeView* tip_marquee_view,
-                               const std::u16string& text)
-      : BubbleDialogDelegateView(tip_marquee_view,
-                                 views::BubbleBorder::TOP_LEFT),
-        tip_marquee_view_(tip_marquee_view) {
-    SetButtons(ui::DIALOG_BUTTON_OK);
-    SetButtonLabel(ui::DIALOG_BUTTON_OK, kTipMarqueeViewGotIt);
-    SetAcceptCallback(base::BindOnce(&TipMarqueeOverflowBubbleView::OnAccept,
-                                     base::Unretained(this)));
-    set_close_on_deactivate(true);
-    SetOwnedByWidget(true);
-
-    auto* const label = AddChildView(std::make_unique<views::Label>(
-        text, views::style::CONTEXT_DIALOG_BODY_TEXT));
-    label->SetMultiLine(true);
-    label->SetMaximumWidth(kTipMarqueeViewOverflowTextWidth);
-    label->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
-    SetLayoutManager(std::make_unique<views::FillLayout>());
-  }
-  ~TipMarqueeOverflowBubbleView() override = default;
-
- private:
-  void OnAccept() {
-    LOG(WARNING) << "OnAccept()";
-    tip_marquee_view_->ClearAndHideTip();
-  }
-
-  const raw_ptr<TipMarqueeView> tip_marquee_view_;
-};
-
-BEGIN_METADATA(TipMarqueeOverflowBubbleView, views::BubbleDialogDelegateView)
-END_METADATA
-
-}  // namespace
-
-constexpr int TipMarqueeView::kTipMarqueeIconSize;
-constexpr int TipMarqueeView::kTipMarqueeIconPadding;
-constexpr int TipMarqueeView::kTipMarqueeIconTotalWidth;
-
-TipMarqueeView::TipMarqueeView() {
-  tip_text_label_ = AddChildView(std::make_unique<views::StyledLabel>());
-  tip_text_label_->SetTextContext(views::style::CONTEXT_LABEL);
-  tip_text_label_->SetDefaultTextStyle(views::style::STYLE_PRIMARY);
-  // TODO(dfried): Figure out how to set elide behavior.
-  // tip_text_label_->SetElideBehavior(gfx::ElideBehavior::ELIDE_TAIL);
-
-  SetBorder(views::CreateEmptyBorder(
-      gfx::Insets::TLBR(0, kTipMarqueeIconTotalWidth, 0, 0)));
-
-  SetVisible(false);
-
-  MaybeShowTestTipMarqueeView(this);
-}
-
-TipMarqueeView::~TipMarqueeView() = default;
-
-bool TipMarqueeView::SetAndShowTip(
-    const std::u16string& tip_text,
-    LearnMoreLinkClickedCallback learn_more_link_clicked_callback) {
-  tip_text_ = tip_text;
-  std::u16string full_tip = tip_text;
-  const std::u16string separator = kTipMarqueeViewSeparator;
-  const size_t tip_text_length = tip_text.length();
-  const bool has_learn_more_link = !learn_more_link_clicked_callback.is_null();
-  full_tip.append(separator);
-  if (has_learn_more_link)
-    full_tip.append(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
-  else
-    full_tip.append(kTipMarqueeViewGotIt);
-  tip_text_label_->SetText(full_tip);
-  tip_text_label_->AddStyleRange(
-      gfx::Range(tip_text_length + separator.length(), full_tip.length()),
-      views::StyledLabel::RangeStyleInfo::CreateForLink(base::BindRepeating(
-          &TipMarqueeView::LinkClicked, base::Unretained(this))));
-  learn_more_link_clicked_callback_ = learn_more_link_clicked_callback;
-  collapsed_ = false;
-  SetVisible(true);
-  return !collapsed_;
-}
-
-void TipMarqueeView::ClearAndHideTip() {
-  if (show_tip_widget_)
-    show_tip_widget_->Close();
-  tip_text_label_->SetText(std::u16string());
-  tip_text_.clear();
-  learn_more_link_clicked_callback_.Reset();
-  SetVisible(false);
-}
-
-bool TipMarqueeView::OnMousePressed(const ui::MouseEvent& event) {
-  if (!IsPointInIcon(event.location()))
-    return false;
-  if (!GetFitsInLayout()) {
-    if (learn_more_link_clicked_callback_)
-      LinkClicked();
-    else
-      ToggleOverflowWidget();
-  } else {
-    collapsed_ = !collapsed_;
-    InvalidateLayout();
-  }
-  return true;
-}
-
-gfx::Size TipMarqueeView::CalculatePreferredSize() const {
-  if (collapsed_)
-    return GetMinimumSize();
-
-  const gfx::Size label_size = tip_text_label_->GetPreferredSize();
-  const int width = label_size.width() + kTipMarqueeIconTotalWidth;
-  const int height = std::max(label_size.height(), kTipMarqueeIconSize);
-  return gfx::Size(width, height);
-}
-
-gfx::Size TipMarqueeView::GetMinimumSize() const {
-  return gfx::Size(kTipMarqueeIconSize, kTipMarqueeIconSize);
-}
-
-void TipMarqueeView::Layout() {
-  // TODO(dfried): animate label
-  if (collapsed_ || size().width() < GetPreferredSize().width()) {
-    tip_text_label_->SetVisible(false);
-  } else {
-    tip_text_label_->SetVisible(true);
-    gfx::Rect text_rect = GetContentsBounds();
-    text_rect.Inset(gfx::Insets::VH(
-        std::max(0, (text_rect.height() -
-                     tip_text_label_->GetPreferredSize().height()) /
-                        2),
-        0));
-    tip_text_label_->SetBoundsRect(text_rect);
-  }
-}
-
-void TipMarqueeView::OnPaint(gfx::Canvas* canvas) {
-  View::OnPaint(canvas);
-  gfx::ImageSkia* const icon =
-      ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
-          IDR_PRODUCT_LOGO_16);
-  canvas->DrawImageInt(*icon, 0, 0, kTipMarqueeIconSize, kTipMarqueeIconSize, 0,
-                       (height() - kTipMarqueeIconSize) / 2,
-                       kTipMarqueeIconSize, kTipMarqueeIconSize, true);
-}
-
-std::u16string TipMarqueeView::GetTooltipText(const gfx::Point& p) const {
-  if (!GetVisible() || !IsPointInIcon(p))
-    return View::GetTooltipText(p);
-
-  // TODO(pkasting): Localize
-  if (tip_text_label_->GetVisible())
-    return kTipMarqueeViewClickToHideTip;
-  if (GetFitsInLayout())
-    return kTipMarqueeViewClickToShowTip;
-  std::u16string result = tip_text_;
-  if (learn_more_link_clicked_callback_) {
-    result.append(kTipMarqueeViewSeparator);
-    result.append(kTipMarqueeViewClickToLearnMore);
-  }
-  return result;
-}
-
-void TipMarqueeView::LinkClicked() {
-  if (!learn_more_link_clicked_callback_) {
-    ClearAndHideTip();
-    return;
-  }
-  if (GetProperty(views::kAnchoredDialogKey))
-    return;
-  learn_more_link_clicked_callback_.Run(this);
-}
-
-bool TipMarqueeView::GetFitsInLayout() const {
-  const views::SizeBounds available = parent()->GetAvailableSize(this);
-  if (!available.width().is_bounded())
-    return true;
-  return available.width().value() >=
-         tip_text_label_->GetPreferredSize().width() +
-             kTipMarqueeIconTotalWidth;
-}
-
-bool TipMarqueeView::IsPointInIcon(const gfx::Point& p) const {
-  const int pos = GetMirroredXInView(p.x());
-  return pos < kTipMarqueeIconTotalWidth;
-}
-
-void TipMarqueeView::ToggleOverflowWidget() {
-  if (show_tip_widget_) {
-    show_tip_widget_->Close();
-    return;
-  }
-
-  DCHECK(!tip_text_.empty());
-  DCHECK(!show_tip_widget_);
-  show_tip_widget_ = views::BubbleDialogDelegateView::CreateBubble(
-      std::make_unique<TipMarqueeOverflowBubbleView>(this, tip_text_));
-  widget_observer_.Observe(show_tip_widget_.get());
-  show_tip_widget_->Show();
-}
-
-void TipMarqueeView::OnWidgetDestroying(views::Widget* widget) {
-  widget_observer_.Reset();
-  if (widget != show_tip_widget_)
-    return;
-  show_tip_widget_ = nullptr;
-}
-
-BEGIN_METADATA(TipMarqueeView, views::View)
-ADD_READONLY_PROPERTY_METADATA(bool, FitsInLayout)
-END_METADATA
diff --git a/chrome/browser/ui/views/user_education/tip_marquee_view.h b/chrome/browser/ui/views/user_education/tip_marquee_view.h
deleted file mode 100644
index e7e0e1c8..0000000
--- a/chrome/browser/ui/views/user_education/tip_marquee_view.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_VIEWS_USER_EDUCATION_TIP_MARQUEE_VIEW_H_
-#define CHROME_BROWSER_UI_VIEWS_USER_EDUCATION_TIP_MARQUEE_VIEW_H_
-
-#include "base/functional/callback.h"
-#include "base/functional/callback_forward.h"
-#include "base/memory/raw_ptr.h"
-#include "base/scoped_observation.h"
-#include "ui/base/metadata/metadata_header_macros.h"
-#include "ui/gfx/canvas.h"
-#include "ui/views/layout/flex_layout_types.h"
-#include "ui/views/metadata/view_factory.h"
-#include "ui/views/style/typography.h"
-#include "ui/views/view.h"
-#include "ui/views/view_observer.h"
-#include "ui/views/widget/widget.h"
-#include "ui/views/widget/widget_observer.h"
-
-namespace views {
-class StyledLabel;
-}
-
-// Displays a tip that can scroll out from a Chrome icon to a full sentence,
-// optionally with a clickable tip.
-//
-//       🌏 Did you know that Chrome can display web pages? [ LEARN MORE ]
-//                                       🌏 Did you know that Chrome ca...
-//                                                                       🌏
-class TipMarqueeView : public views::View, public views::WidgetObserver {
- public:
-  METADATA_HEADER(TipMarqueeView);
-
-  using LearnMoreLinkClickedCallback =
-      base::RepeatingCallback<void(TipMarqueeView*)>;
-
-  // Constructs a tip marquee view which will display text
-  TipMarqueeView();
-  ~TipMarqueeView() override;
-
-  // Sets the tip and shows the view if there is adequate space. |tip_text| will
-  // be displayed as plain text, and if |learn_more_link_clicked_callback| is
-  // specified, a "learn more" link will be present that will call the callback
-  // when clicked.
-  //
-  // Returns true if there is sufficient space in the parent view's layout to
-  // display the fully expanded tip text and (if applicable) Learn More link.
-  bool SetAndShowTip(
-      const std::u16string& tip_text,
-      LearnMoreLinkClickedCallback learn_more_link_clicked_callback =
-          LearnMoreLinkClickedCallback());
-
-  // Clears the tip and hides the view.
-  void ClearAndHideTip();
-
-  // views::View:
-  gfx::Size GetMinimumSize() const override;
-  std::u16string GetTooltipText(const gfx::Point& p) const override;
-  void Layout() override;
-  bool OnMousePressed(const ui::MouseEvent& event) override;
-
-  static constexpr int kTipMarqueeIconSize = 16;
-  static constexpr int kTipMarqueeIconPadding = 6;
-  static constexpr int kTipMarqueeIconTotalWidth =
-      kTipMarqueeIconSize + kTipMarqueeIconPadding;
-
- private:
-  // views::View:
-  gfx::Size CalculatePreferredSize() const override;
-  void OnPaint(gfx::Canvas* canvas) override;
-
-  // views::WidgetObserver:
-  void OnWidgetDestroying(views::Widget* widget) override;
-
-  void LinkClicked();
-  bool GetFitsInLayout() const;
-
-  bool IsPointInIcon(const gfx::Point& p) const;
-
-  void ToggleOverflowWidget();
-
-  std::u16string tip_text_;
-  raw_ptr<views::StyledLabel> tip_text_label_ = nullptr;
-  LearnMoreLinkClickedCallback learn_more_link_clicked_callback_;
-  bool collapsed_ = false;
-  raw_ptr<views::Widget> show_tip_widget_ = nullptr;
-  base::ScopedObservation<views::Widget, views::WidgetObserver>
-      widget_observer_{this};
-};
-
-BEGIN_VIEW_BUILDER(/*no export */, TipMarqueeView, views::View)
-END_VIEW_BUILDER
-
-DEFINE_VIEW_BUILDER(/*no export */, TipMarqueeView)
-
-#endif  // CHROME_BROWSER_UI_VIEWS_USER_EDUCATION_TIP_MARQUEE_VIEW_H_
diff --git a/chrome/browser/ui/views/user_education/tip_marquee_view_browsertest.cc b/chrome/browser/ui/views/user_education/tip_marquee_view_browsertest.cc
deleted file mode 100644
index c120caa..0000000
--- a/chrome/browser/ui/views/user_education/tip_marquee_view_browsertest.cc
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/ui/views/user_education/tip_marquee_view.h"
-
-#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "content/public/test/browser_test.h"
-
-class TipMarqueeViewBrowserTest : public InProcessBrowserTest {
- public:
-  TabStripRegionView* tab_strip_region_view() {
-    return BrowserView::GetBrowserViewForBrowser(browser())
-        ->tab_strip_region_view();
-  }
-
-  TipMarqueeView* tip_marquee_view() {
-    return tab_strip_region_view()->tip_marquee_view();
-  }
-};
-
-IN_PROC_BROWSER_TEST_F(TipMarqueeViewBrowserTest, MarqueeStartsInvisibile) {
-  EXPECT_FALSE(tip_marquee_view()->GetVisible());
-}
-
-IN_PROC_BROWSER_TEST_F(TipMarqueeViewBrowserTest,
-                       VisibilityChangesOnSetAndClearTip) {
-  tip_marquee_view()->SetAndShowTip(u"Tip Text");
-  EXPECT_TRUE(tip_marquee_view()->GetVisible());
-  tip_marquee_view()->ClearAndHideTip();
-  EXPECT_FALSE(tip_marquee_view()->GetVisible());
-}
-
-IN_PROC_BROWSER_TEST_F(TipMarqueeViewBrowserTest, TipStartsExpanded) {
-  tip_marquee_view()->SetAndShowTip(u"Tip Text");
-  RunScheduledLayouts();
-  EXPECT_EQ(tip_marquee_view()->GetPreferredSize(), tip_marquee_view()->size());
-}
diff --git a/chrome/browser/ui/views/user_education/tip_marquee_view_unittest.cc b/chrome/browser/ui/views/user_education/tip_marquee_view_unittest.cc
deleted file mode 100644
index 226527db..0000000
--- a/chrome/browser/ui/views/user_education/tip_marquee_view_unittest.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/views/user_education/tip_marquee_view.h"
-#include <cstddef>
-
-#include "base/functional/bind.h"
-#include "base/memory/raw_ptr.h"
-#include "base/run_loop.h"
-#include "base/scoped_observation.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/bind.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/events/base_event_utils.h"
-#include "ui/events/event.h"
-#include "ui/events/event_constants.h"
-#include "ui/events/keycodes/dom/dom_code.h"
-#include "ui/events/types/event_type.h"
-#include "ui/views/bubble/bubble_dialog_delegate_view.h"
-#include "ui/views/controls/button/label_button.h"
-#include "ui/views/layout/flex_layout_types.h"
-#include "ui/views/layout/flex_layout_view.h"
-#include "ui/views/layout/layout_types.h"
-#include "ui/views/test/views_test_base.h"
-#include "ui/views/test/views_test_utils.h"
-#include "ui/views/test/widget_test.h"
-#include "ui/views/view_class_properties.h"
-#include "ui/views/widget/widget.h"
-#include "ui/views/window/dialog_delegate.h"
-
-namespace {
-
-static constexpr gfx::Size kTipMarqueeWidgetSize(1000, 60);
-static constexpr gfx::Size kSpacerPreferredSize(100, 60);
-
-class LearnMoreCallback {
- public:
-  TipMarqueeView::LearnMoreLinkClickedCallback Callback() {
-    return base::BindRepeating(&LearnMoreCallback::IncrementCount,
-                               base::Unretained(this));
-  }
-  int count() const { return count_; }
-
- private:
-  void IncrementCount(TipMarqueeView*) { ++count_; }
-  int count_ = 0;
-};
-
-}  // anonymous namespace
-
-class TipMarqueeViewTest : public views::ViewsTestBase {
- public:
-  TipMarqueeViewTest() = default;
-  ~TipMarqueeViewTest() override = default;
-
-  void SetUp() override {
-    ViewsTestBase::SetUp();
-
-    widget_ = std::make_unique<views::Widget>();
-    views::Widget::InitParams params =
-        CreateParams(views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
-    params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
-    params.bounds = gfx::Rect(gfx::Point(), kTipMarqueeWidgetSize);
-    widget_->Init(std::move(params));
-    widget_->SetContentsView(
-        views::Builder<views::FlexLayoutView>()
-            .SetOrientation(views::LayoutOrientation::kHorizontal)
-            .AddChildren(
-                views::Builder<views::View>()
-                    .CopyAddressTo(&spacer_)
-                    .SetPreferredSize(kSpacerPreferredSize)
-                    .SetProperty(views::kFlexBehaviorKey,
-                                 views::FlexSpecification(
-                                     views::LayoutOrientation::kHorizontal,
-                                     views::MinimumFlexSizeRule::kPreferred,
-                                     views::MaximumFlexSizeRule::kUnbounded)),
-                views::Builder<TipMarqueeView>(
-                    std::make_unique<TipMarqueeView>())
-                    .CopyAddressTo(&marquee_)
-                    .SetProperty(
-                        views::kFlexBehaviorKey,
-                        views::FlexSpecification(
-                            views::LayoutOrientation::kHorizontal,
-                            views::MinimumFlexSizeRule::kPreferredSnapToMinimum)
-                            .WithOrder(2))
-                    .SetProperty(views::kCrossAxisAlignmentKey,
-                                 views::LayoutAlignment::kCenter))
-            .Build());
-
-    widget_->Show();
-  }
-
-  void TearDown() override {
-    widget_.reset();
-    spacer_ = nullptr;
-    marquee_ = nullptr;
-    ViewsTestBase::TearDown();
-  }
-
-  // Send mouse down and mouse up event at |point| within the marquee, ensuring
-  // that the event is delivered to the correct view (which could be the marquee
-  // or a child view).
-  void SimulateMarqueeClick(gfx::Point point) {
-    point.Offset(marquee_->x(), marquee_->y());
-    ui::MouseEvent press(ui::ET_MOUSE_PRESSED, point, point,
-                         ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON,
-                         ui::EF_LEFT_MOUSE_BUTTON);
-    ui::MouseEvent release(ui::ET_MOUSE_RELEASED, point, point,
-                           ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON,
-                           ui::EF_LEFT_MOUSE_BUTTON);
-    widget_->GetRootView()->OnMouseEvent(&press);
-    widget_->GetRootView()->OnMouseEvent(&release);
-  }
-
- protected:
-  std::unique_ptr<views::Widget> widget_;
-  raw_ptr<views::View> spacer_ = nullptr;
-  raw_ptr<TipMarqueeView> marquee_ = nullptr;
-};
-
-TEST_F(TipMarqueeViewTest, NotVisibleWhenNoTip) {
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_FALSE(marquee_->GetVisible());
-}
-
-TEST_F(TipMarqueeViewTest, VisibleWhenTipSet) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_TRUE(marquee_->GetVisible());
-}
-
-TEST_F(TipMarqueeViewTest, ClearTipHidesView) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_TRUE(marquee_->GetVisible());
-  EXPECT_EQ(marquee_->GetPreferredSize(), marquee_->size());
-  marquee_->ClearAndHideTip();
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_FALSE(marquee_->GetVisible());
-}
-
-TEST_F(TipMarqueeViewTest, TipStartsExpanded) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_GT(marquee_->width(), marquee_->GetMinimumSize().width());
-}
-
-TEST_F(TipMarqueeViewTest, TipCollapsesWhenNotEnoughSpace) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  gfx::Size spacer_size = spacer_->size();
-  spacer_size.Enlarge(1, 0);
-  spacer_->SetPreferredSize(spacer_size);
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-}
-
-TEST_F(TipMarqueeViewTest, TipCollapsesAndExpandsWhenIconIsClicked) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-
-  // This location should be comfortably inside the icon area.
-  constexpr gfx::Point kPressPoint(10, 10);
-
-  // Collapse.
-  marquee_->OnMousePressed(ui::MouseEvent(
-      ui::ET_MOUSE_PRESSED, kPressPoint, kPressPoint, ui::EventTimeForNow(),
-      ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // Expand.
-  marquee_->OnMousePressed(ui::MouseEvent(
-      ui::ET_MOUSE_PRESSED, kPressPoint, kPressPoint, ui::EventTimeForNow(),
-      ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_GT(marquee_->width(), marquee_->GetMinimumSize().width());
-}
-
-TEST_F(TipMarqueeViewTest, TipDoesNotExpandWhenInsufficientSpace) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  gfx::Size spacer_size = spacer_->size();
-  spacer_size.Enlarge(1, 0);
-  spacer_->SetPreferredSize(spacer_size);
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the icon area.
-  constexpr gfx::Point kPressPoint(10, 10);
-  SimulateMarqueeClick(kPressPoint);
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-}
-
-TEST_F(TipMarqueeViewTest, ClickLearnMoreLink) {
-  LearnMoreCallback callback;
-  marquee_->SetAndShowTip(u"Tip Text", callback.Callback());
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_GT(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the "learn more" link.
-  const gfx::Point click_point(marquee_->width() - 10, marquee_->height() / 2);
-  EXPECT_EQ(0, callback.count());
-  SimulateMarqueeClick(click_point);
-  EXPECT_EQ(1, callback.count());
-}
-
-TEST_F(TipMarqueeViewTest, ClickNotInLearnMoreLinkHasNoEffect) {
-  LearnMoreCallback callback;
-  marquee_->SetAndShowTip(u"Tip Text", callback.Callback());
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_GT(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the tip text but not the link.
-  const gfx::Point click_point(TipMarqueeView::kTipMarqueeIconTotalWidth + 10,
-                               marquee_->height() / 2);
-  EXPECT_EQ(0, callback.count());
-  SimulateMarqueeClick(click_point);
-  EXPECT_EQ(0, callback.count());
-}
-
-TEST_F(TipMarqueeViewTest, ClickWhenForcedCollapsedCallsLearnMore) {
-  LearnMoreCallback callback;
-  marquee_->SetAndShowTip(u"Tip Text", callback.Callback());
-  views::test::RunScheduledLayout(marquee_);
-  gfx::Size spacer_size = spacer_->size();
-  spacer_size.Enlarge(1, 0);
-  spacer_->SetPreferredSize(spacer_size);
-  views::test::RunScheduledLayout(marquee_);
-  EXPECT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the icon area.
-  constexpr gfx::Point kPressPoint(10, 10);
-  EXPECT_EQ(0, callback.count());
-  SimulateMarqueeClick(kPressPoint);
-  EXPECT_EQ(1, callback.count());
-}
-
-TEST_F(TipMarqueeViewTest, ClickWhenForcedCollapsedDisplaysOverflow) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  gfx::Size spacer_size = spacer_->size();
-  spacer_size.Enlarge(1, 0);
-  spacer_->SetPreferredSize(spacer_size);
-  views::test::RunScheduledLayout(marquee_);
-  ASSERT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the icon area.
-  constexpr gfx::Point kPressPoint(10, 10);
-  SimulateMarqueeClick(kPressPoint);
-  views::DialogDelegate* const delegate =
-      marquee_->GetProperty(views::kAnchoredDialogKey);
-  EXPECT_NE(static_cast<views::DialogDelegate*>(nullptr), delegate);
-}
-
-TEST_F(TipMarqueeViewTest, OverflowBubbleCancelDoesNotDismissTip) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  gfx::Size spacer_size = spacer_->size();
-  spacer_size.Enlarge(1, 0);
-  spacer_->SetPreferredSize(spacer_size);
-  views::test::RunScheduledLayout(marquee_);
-  ASSERT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the icon area.
-  constexpr gfx::Point kPressPoint(10, 10);
-  SimulateMarqueeClick(kPressPoint);
-  views::DialogDelegate* const delegate =
-      marquee_->GetProperty(views::kAnchoredDialogKey);
-  views::Widget* const overflow_widget = delegate->GetWidget();
-  ASSERT_NE(static_cast<views::Widget*>(nullptr), overflow_widget);
-  views::test::WidgetDestroyedWaiter waiter(overflow_widget);
-  ui::KeyEvent press_esc(ui::ET_KEY_PRESSED, ui::VKEY_ESCAPE, 0);
-  overflow_widget->OnKeyEvent(&press_esc);
-  waiter.Wait();
-  EXPECT_TRUE(marquee_->GetVisible());
-}
-
-TEST_F(TipMarqueeViewTest, OverflowBubbleGotItDismissesTip) {
-  marquee_->SetAndShowTip(u"Tip Text");
-  views::test::RunScheduledLayout(marquee_);
-  gfx::Size spacer_size = spacer_->size();
-  spacer_size.Enlarge(1, 0);
-  spacer_->SetPreferredSize(spacer_size);
-  views::test::RunScheduledLayout(marquee_);
-  ASSERT_EQ(marquee_->width(), marquee_->GetMinimumSize().width());
-
-  // This location should be comfortably inside the icon area.
-  constexpr gfx::Point kPressPoint(10, 10);
-  SimulateMarqueeClick(kPressPoint);
-  views::DialogDelegate* const delegate =
-      marquee_->GetProperty(views::kAnchoredDialogKey);
-  views::test::WidgetDestroyedWaiter waiter(delegate->GetWidget());
-  delegate->AcceptDialog();
-  waiter.Wait();
-  EXPECT_FALSE(marquee_->GetVisible());
-}
diff --git a/chrome/browser/ui/webui/ash/login/core_oobe_handler.cc b/chrome/browser/ui/webui/ash/login/core_oobe_handler.cc
index ae4adff..bfcbf31 100644
--- a/chrome/browser/ui/webui/ash/login/core_oobe_handler.cc
+++ b/chrome/browser/ui/webui/ash/login/core_oobe_handler.cc
@@ -65,6 +65,8 @@
               &CoreOobeHandler::HandleInitializeCoreHandler);
   AddCallback("screenStateInitialize",
               &CoreOobeHandler::HandleScreenStateInitialize);
+  AddCallback("priorityScreensLoaded",
+              &CoreOobeHandler::HandlePrriorityScreensLoaded);
 
   AddCallback("updateCurrentScreen",
               &CoreOobeHandler::HandleUpdateCurrentScreen);
@@ -92,7 +94,10 @@
 void CoreOobeHandler::ShowScreenWithData(
     const OobeScreenId& screen,
     absl::optional<base::Value::Dict> data) {
-  CHECK(ui_init_state_ == UiState::kFullyInitialized);
+  const bool is_safe_priority_call =
+      IsPriorityScreen(screen.name) &&
+      ui_init_state_ == UiState::kPriorityScreensLoaded;
+  CHECK(ui_init_state_ == UiState::kFullyInitialized || is_safe_priority_call);
 
   base::Value::Dict screen_params;
   screen_params.Set("id", screen.name);
@@ -164,6 +169,16 @@
   CallJS("cr.ui.Oobe.setBluetoothDeviceInfo", bluetooth_name);
 }
 
+bool CoreOobeHandler::IsPriorityScreen(const std::string& screen_name) {
+  // List of screens that are supported for prioritization. Currently, only the
+  // Welcome Screen ('connect') is supported.
+  const std::vector<std::string> supported_screens{"connect"};
+
+  const auto iter = std::find(supported_screens.begin(),
+                              supported_screens.end(), screen_name);
+  return iter != supported_screens.end();
+}
+
 void CoreOobeHandler::HandleInitializeCoreHandler() {
   VLOG(3) << "CoreOobeHandler::HandleInitializeCoreHandler";
   CHECK(ui_init_state_ == UiState::kUninitialized);
@@ -173,9 +188,17 @@
       UiState::kCoreHandlerInitialized);
 }
 
+void CoreOobeHandler::HandlePrriorityScreensLoaded() {
+  VLOG(3) << "CoreOobeHandler::HandlePrriorityScreensLoaded";
+  CHECK(ui_init_state_ == UiState::kCoreHandlerInitialized);
+  ui_init_state_ = UiState::kPriorityScreensLoaded;
+  GetOobeUI()->GetCoreOobe()->UpdateUiInitState(
+      UiState::kPriorityScreensLoaded);
+}
+
 void CoreOobeHandler::HandleScreenStateInitialize() {
   VLOG(3) << "CoreOobeHandler::HandleScreenStateInitialize";
-  CHECK(ui_init_state_ == UiState::kCoreHandlerInitialized);
+  CHECK(ui_init_state_ == UiState::kPriorityScreensLoaded);
   ui_init_state_ = UiState::kFullyInitialized;
   GetOobeUI()->GetCoreOobe()->UpdateUiInitState(UiState::kFullyInitialized);
 }
diff --git a/chrome/browser/ui/webui/ash/login/core_oobe_handler.h b/chrome/browser/ui/webui/ash/login/core_oobe_handler.h
index ebc6bef..6631a55f 100644
--- a/chrome/browser/ui/webui/ash/login/core_oobe_handler.h
+++ b/chrome/browser/ui/webui/ash/login/core_oobe_handler.h
@@ -27,6 +27,7 @@
   enum class UiState {
     kUninitialized,           // Start of things
     kCoreHandlerInitialized,  // First oobe.js instruction
+    kPriorityScreensLoaded,   // Priority screens are loaded and could be shown.
     kFullyInitialized,        // Fully initialized a.k.a 'screenStateInitialize'
   };
 
@@ -54,6 +55,10 @@
   virtual void SetVirtualKeyboardShown(bool shown) = 0;
   virtual void SetOsVersionLabelText(const std::string& label_text) = 0;
   virtual void SetBluetoothDeviceInfo(const std::string& bluetooth_name) = 0;
+
+  // Whether the screen being checked belongs to the group of screens that are
+  // prioritized during OOBE's initialization.
+  virtual bool IsPriorityScreen(const std::string& screen_name) = 0;
 };
 
 // The core handler for Javascript messages related to the "oobe" view.
@@ -94,10 +99,12 @@
   void SetVirtualKeyboardShown(bool shown) override;
   void SetOsVersionLabelText(const std::string& label_text) override;
   void SetBluetoothDeviceInfo(const std::string& bluetooth_name) override;
+  bool IsPriorityScreen(const std::string& screen_name) override;
   // ---- END --- CoreOobeView
 
   // ---- Handlers for JS WebUI messages.
   void HandleInitializeCoreHandler();
+  void HandlePrriorityScreensLoaded();
   void HandleScreenStateInitialize();
   void HandleEnableShelfButtons(bool enable);
   void HandleUpdateCurrentScreen(const std::string& screen);
diff --git a/chrome/browser/ui/webui/ash/login/oobe_ui.cc b/chrome/browser/ui/webui/ash/login/oobe_ui.cc
index 7f5ea2dd..adb669f 100644
--- a/chrome/browser/ui/webui/ash/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/ash/login/oobe_ui.cc
@@ -290,6 +290,8 @@
   const bool is_oobe_flow = display_type == OobeUI::kOobeDisplay;
   source->AddBoolean("isOsInstallAllowed", switches::IsOsInstallAllowed());
   source->AddBoolean("isOobeFlow", is_oobe_flow);
+  source->AddBoolean("isOobeLazyLoadingEnabled",
+                     features::IsOobeLazyLoadingEnabled());
   // TODO (b/268463435) Cleanup OobeJelly
   source->AddBoolean("isOobeJellyEnabled", features::IsOobeJellyEnabled());
   // TODO (b/269117729) Cleanup OobeSimon
diff --git a/chrome/browser/ui/webui/policy/policy_ui.cc b/chrome/browser/ui/webui/policy/policy_ui.cc
index 7f1930f2..1dbab17 100644
--- a/chrome/browser/ui/webui/policy/policy_ui.cc
+++ b/chrome/browser/ui/webui/policy/policy_ui.cc
@@ -6,6 +6,9 @@
 
 #include <memory>
 
+#include "base/json/json_writer.h"
+#include "base/strings/stringprintf.h"
+#include "base/system/sys_info.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/profiles/profile.h"
@@ -15,28 +18,21 @@
 #include "chrome/grit/chromium_strings.h"
 #include "components/grit/policy_resources.h"
 #include "components/grit/policy_resources_map.h"
+#include "components/policy/core/common/policy_logger.h"
 #include "components/strings/grit/components_strings.h"
+#include "components/version_info/version_info.h"
+#include "components/version_ui/version_handler_helper.h"
 #include "content/public/browser/web_ui.h"
+#include "content/public/common/user_agent.h"
 #include "services/network/public/mojom/content_security_policy.mojom.h"
 #include "ui/base/webui/web_ui_util.h"
 
-#if BUILDFLAG(IS_ANDROID)
-#include "base/json/json_writer.h"
-#include "base/strings/stringprintf.h"
-#include "base/system/sys_info.h"
-#include "components/policy/core/common/policy_logger.h"
-#include "components/version_info/version_info.h"
-#include "components/version_ui/version_handler_helper.h"
-#include "content/public/common/user_agent.h"
-#endif  // BUILDFLAG(IS_ANDROID)
-
 namespace {
-
-#if BUILDFLAG(IS_ANDROID)
 // Returns the operating system information to be displayed on
 // chrome://policy/logs page.
 std::string GetOsInfo() {
-  // The base format for the OS version and build
+#if BUILDFLAG(IS_ANDROID)
+  // The base format for the OS version and build.
   constexpr char kOSVersionAndBuildFormat[] = "Android %s %s";
   return base::StringPrintf(
       kOSVersionAndBuildFormat,
@@ -44,6 +40,11 @@
       (content::GetAndroidOSInfo(content::IncludeAndroidBuildNumber::Include,
                                  content::IncludeAndroidModel::Include))
           .c_str());
+#else
+  return base::StringPrintf("%s %s",
+                            base::SysInfo::OperatingSystemName().c_str(),
+                            base::SysInfo::OperatingSystemVersion().c_str());
+#endif  //  BUILDFLAG (IS_ANDROID)
 }
 
 // Returns the version information to be displayed on the chrome://policy/logs
@@ -58,7 +59,6 @@
 
   return version_info;
 }
-#endif
 
 void CreateAndAddPolicyUIHtmlSource(Profile* profile) {
   content::WebUIDataSource* source = content::WebUIDataSource::CreateAndAdd(
@@ -143,7 +143,6 @@
   };
   source->AddLocalizedStrings(kPolicyLogsStrings);
 
-#if BUILDFLAG(IS_ANDROID)
   source->AddBoolean(
       "loggingEnabled",
       policy::PolicyLogger::GetInstance()->IsPolicyLoggingEnabled());
@@ -157,7 +156,6 @@
 
   source->AddResourcePath("logs/", IDR_POLICY_LOGS_POLICY_LOGS_HTML);
   source->AddResourcePath("logs", IDR_POLICY_LOGS_POLICY_LOGS_HTML);
-#endif  // BUILDFLAG(IS_ANDROID)
 
   webui::SetupWebUIDataSource(
       source, base::make_span(kPolicyResources, kPolicyResourcesSize),
diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browser/ui/webui/policy/policy_ui_handler.cc
index a289111b..c9183518 100644
--- a/chrome/browser/ui/webui/policy/policy_ui_handler.cc
+++ b/chrome/browser/ui/webui/policy/policy_ui_handler.cc
@@ -55,6 +55,7 @@
 #include "components/policy/core/common/cloud/cloud_policy_refresh_scheduler.h"
 #include "components/policy/core/common/cloud/cloud_policy_util.h"
 #include "components/policy/core/common/policy_details.h"
+#include "components/policy/core/common/policy_logger.h"
 #include "components/policy/core/common/policy_scheduler.h"
 #include "components/policy/core/common/policy_types.h"
 #include "components/policy/core/common/remote_commands/remote_commands_service.h"
@@ -73,10 +74,6 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/webui/web_ui_util.h"
 
-#if BUILDFLAG(IS_ANDROID)
-#include "components/policy/core/common/policy_logger.h"
-#endif  // BUILDFLAG(IS_ANDROID)
-
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 #include "chrome/browser/ash/policy/core/browser_policy_connector_ash.h"
 #include "chrome/browser/ash/policy/core/device_cloud_policy_store_ash.h"
@@ -180,12 +177,10 @@
       base::BindRepeating(&PolicyUIHandler::HandleCopyPoliciesJson,
                           base::Unretained(this)));
 
-#if BUILDFLAG(IS_ANDROID)
   web_ui()->RegisterMessageCallback(
       "getPolicyLogs",
       base::BindRepeating(&PolicyUIHandler::HandleGetPolicyLogs,
                           base::Unretained(this)));
-#endif  // BUILDFLAG(IS_ANDROID)
 
 #if !BUILDFLAG(IS_CHROMEOS)
   web_ui()->RegisterMessageCallback(
@@ -297,14 +292,12 @@
   scw.WriteText(base::UTF8ToUTF16(policies_json));
 }
 
-#if BUILDFLAG(IS_ANDROID)
 void PolicyUIHandler::HandleGetPolicyLogs(const base::Value::List& args) {
   DCHECK(policy::PolicyLogger::GetInstance()->IsPolicyLoggingEnabled());
   AllowJavascript();
   ResolveJavascriptCallback(args[0],
                             policy::PolicyLogger::GetInstance()->GetAsList());
 }
-#endif  // BUILDFLAG(IS_ANDROID)
 
 #if !BUILDFLAG(IS_CHROMEOS)
 void PolicyUIHandler::HandleUploadReport(const base::Value::List& args) {
diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.h b/chrome/browser/ui/webui/policy/policy_ui_handler.h
index a6a320f0..50e613f4a 100644
--- a/chrome/browser/ui/webui/policy/policy_ui_handler.h
+++ b/chrome/browser/ui/webui/policy/policy_ui_handler.h
@@ -63,10 +63,8 @@
   void HandleUploadReport(const base::Value::List& args);
 #endif
 
-#if BUILDFLAG(IS_ANDROID)
   // Handler functions for chrome://policy/logs.
   void HandleGetPolicyLogs(const base::Value::List& args);
-#endif  // BUILDFLAG(IS_ANDROID)
 
   // Send information about the current policy values to the UI. Information is
   // sent in two parts to the UI:
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index 09a53e9..71cf6794 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -745,7 +745,7 @@
   ReportUserActionHistogram(user_action);
 
 #if BUILDFLAG(ENABLE_PRINT_CONTENT_ANALYSIS)
-  const std::string device_name = *settings.FindString(kSettingDeviceName);
+  std::string device_name = *settings.FindString(kSettingDeviceName);
 
   auto on_verdict =
       base::BindOnce(&PrintPreviewHandler::OnVerdictByEnterprisePolicy,
diff --git a/chrome/browser/ui/webui/settings/ash/kerberos_accounts_handler.cc b/chrome/browser/ui/webui/settings/ash/kerberos_accounts_handler.cc
index fce6f00..36617c9 100644
--- a/chrome/browser/ui/webui/settings/ash/kerberos_accounts_handler.cc
+++ b/chrome/browser/ui/webui/settings/ash/kerberos_accounts_handler.cc
@@ -7,6 +7,7 @@
 #include <string>
 #include <utility>
 
+#include "ash/constants/ash_features.h"
 #include "base/functional/bind.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/string_util.h"
@@ -123,6 +124,11 @@
       "kerberosRememberPasswordEnabled",
       local_state->GetBoolean(::prefs::kKerberosRememberPasswordEnabled));
 
+  // Whether the 'Remember password' checkbox should be checked by default.
+  html_source->AddBoolean(
+      "kerberosRememberPasswordByDefault",
+      features::IsKerberosRememberPasswordByDefaultEnabled());
+
   // Prefilled domain if policy is enabled. Note that Kerberos
   // domains should be in all uppercase.
   html_source->AddString("kerberosDomainAutocomplete",
diff --git a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc
index bc78b28..eaf9aa2 100644
--- a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc
+++ b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/companion/core/companion_permission_utils.h"
 #include "chrome/browser/companion/core/companion_url_builder.h"
 #include "chrome/browser/companion/core/promo_handler.h"
-#include "chrome/browser/companion/core/signin_delegate.h"
 #include "chrome/browser/companion/text_finder/text_finder_manager.h"
 #include "chrome/browser/companion/text_finder/text_highlighter_manager.h"
 #include "chrome/browser/profiles/profile.h"
@@ -20,6 +19,7 @@
 #include "chrome/browser/ui/side_panel/companion/companion_tab_helper.h"
 #include "chrome/browser/ui/side_panel/companion/companion_utils.h"
 #include "chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.h"
+#include "chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.h"
 #include "chrome/browser/unified_consent/unified_consent_service_factory.h"
 #include "chrome/common/webui_url_constants.h"
 #include "components/lens/buildflags.h"
@@ -41,13 +41,13 @@
     : receiver_(this, std::move(receiver)),
       page_(std::move(page)),
       companion_untrusted_ui_(companion_untrusted_ui),
-      signin_delegate_(SigninDelegate::Create(GetProfile())),
+      signin_delegate_(std::make_unique<SigninDelegateImpl>(
+          companion_untrusted_ui_->web_ui()->GetWebContents())),
       url_builder_(
           std::make_unique<CompanionUrlBuilder>(GetProfile()->GetPrefs(),
                                                 signin_delegate_.get())),
       promo_handler_(std::make_unique<PromoHandler>(GetProfile()->GetPrefs(),
-                                                    signin_delegate_.get(),
-                                                    this)),
+                                                    signin_delegate_.get())),
       consent_helper_(unified_consent::UrlKeyedDataCollectionConsentHelper::
                           NewAnonymizedDataCollectionConsentHelper(
                               GetProfile()->GetPrefs())) {
@@ -187,8 +187,9 @@
 
 void CompanionPageHandler::OnPromoAction(
     side_panel::mojom::PromoType promo_type,
-    side_panel::mojom::PromoAction promo_action) {
-  promo_handler_->OnPromoAction(promo_type, promo_action);
+    side_panel::mojom::PromoAction promo_action,
+    const absl::optional<GURL>& exps_promo_url) {
+  promo_handler_->OnPromoAction(promo_type, promo_action, exps_promo_url);
   metrics_logger_->OnPromoAction(promo_type, promo_action);
 }
 
@@ -210,7 +211,7 @@
 }
 
 void CompanionPageHandler::OnOpenInNewTabButtonURLChanged(
-    const ::GURL& url_to_open) {
+    const GURL& url_to_open) {
   auto* companion_helper =
       companion::CompanionTabHelper::FromWebContents(web_contents());
   DCHECK(companion_helper);
@@ -257,12 +258,6 @@
       text_directive);
 }
 
-void CompanionPageHandler::EnableMsbb(bool enable_msbb) {
-  auto* consent_service =
-      UnifiedConsentServiceFactory::GetForProfile(GetProfile());
-  consent_service->SetUrlKeyedAnonymizedDataCollectionEnabled(enable_msbb);
-}
-
 Browser* CompanionPageHandler::GetBrowser() {
   auto* webui_contents = companion_untrusted_ui_->web_ui()->GetWebContents();
   auto* browser = companion::GetBrowserForWebContents(webui_contents);
diff --git a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h
index a33e540..ab8f934 100644
--- a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h
+++ b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h
@@ -9,7 +9,6 @@
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/companion/core/constants.h"
 #include "chrome/browser/companion/core/mojom/companion.mojom.h"
-#include "chrome/browser/companion/core/msbb_delegate.h"
 #include "chrome/browser/ui/side_panel/side_panel_enums.h"
 #include "components/lens/buildflags.h"
 #include "components/unified_consent/url_keyed_data_collection_consent_helper.h"
@@ -33,7 +32,6 @@
 class CompanionPageHandler
     : public side_panel::mojom::CompanionPageHandler,
       public content::WebContentsObserver,
-      public MsbbDelegate,
       public unified_consent::UrlKeyedDataCollectionConsentHelper::Observer {
  public:
   CompanionPageHandler(
@@ -47,10 +45,11 @@
   // side_panel::mojom::CompanionPageHandler:
   void ShowUI() override;
   void OnPromoAction(side_panel::mojom::PromoType promo_type,
-                     side_panel::mojom::PromoAction promo_action) override;
+                     side_panel::mojom::PromoAction promo_action,
+                     const absl::optional<GURL>& exps_promo_url) override;
   void OnRegionSearchClicked() override;
   void OnExpsOptInStatusAvailable(bool is_exps_opted_in) override;
-  void OnOpenInNewTabButtonURLChanged(const ::GURL& url_to_open) override;
+  void OnOpenInNewTabButtonURLChanged(const GURL& url_to_open) override;
   void RecordUiSurfaceShown(side_panel::mojom::UiSurface ui_surface,
                             uint32_t ui_surface_position,
                             uint32_t child_element_available_count,
@@ -78,9 +77,6 @@
   void OnImageQuery(side_panel::mojom::ImageQuery image_query);
 
  private:
-  // MsbbDelegate overrides.
-  void EnableMsbb(bool enable_msbb) override;
-
   // Notifies the companion side panel about the URL of the main frame. Based on
   // the call site, either does a full reload of the side panel or does a
   // postmessage() update. Reload is done during initial load of the side panel,
diff --git a/chrome/browser/ui/webui/side_panel/companion/signin_delegate.cc b/chrome/browser/ui/webui/side_panel/companion/signin_delegate.cc
deleted file mode 100644
index 4be83e1e..0000000
--- a/chrome/browser/ui/webui/side_panel/companion/signin_delegate.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/companion/core/signin_delegate.h"
-
-#include "base/functional/callback.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/signin/identity_manager_factory.h"
-#include "chrome/browser/signin/signin_ui_util.h"
-#include "chrome/browser/sync/sync_service_factory.h"
-#include "components/prefs/pref_service.h"
-#include "components/signin/public/base/consent_level.h"
-#include "components/signin/public/base/signin_metrics.h"
-#include "components/signin/public/base/signin_pref_names.h"
-#include "components/signin/public/identity_manager/identity_manager.h"
-
-namespace companion {
-namespace {
-class SigninDelegateImpl : public SigninDelegate {
- public:
-  explicit SigninDelegateImpl(Profile* profile);
-  ~SigninDelegateImpl() override;
-
-  bool AllowedSignin() override;
-  bool IsSignedIn() override;
-  void StartSigninFlow() override;
-
- private:
-  raw_ptr<Profile> profile_;
-};
-
-SigninDelegateImpl::SigninDelegateImpl(Profile* profile) : profile_(profile) {}
-
-SigninDelegateImpl::~SigninDelegateImpl() = default;
-
-bool SigninDelegateImpl::AllowedSignin() {
-  if (!profile_->GetPrefs()->GetBoolean(prefs::kSigninAllowed)) {
-    return false;
-  }
-
-  if (!SyncServiceFactory::IsSyncAllowed(profile_)) {
-    return false;
-  }
-
-  return true;
-}
-
-bool SigninDelegateImpl::IsSignedIn() {
-  return IdentityManagerFactory::GetForProfile(profile_)->HasPrimaryAccount(
-      signin::ConsentLevel::kSignin);
-}
-
-void SigninDelegateImpl::StartSigninFlow() {
-  DCHECK(AllowedSignin());
-
-  // Show the promo here.
-  signin_ui_util::EnableSyncFromSingleAccountPromo(
-      profile_,
-      IdentityManagerFactory::GetForProfile(profile_)->GetPrimaryAccountInfo(
-          signin::ConsentLevel::kSignin),
-      signin_metrics::AccessPoint::ACCESS_POINT_SEARCH_COMPANION);
-}
-
-}  // namespace
-
-// static
-std::unique_ptr<SigninDelegate> SigninDelegate::Create(Profile* profile) {
-  return std::make_unique<SigninDelegateImpl>(profile);
-}
-
-}  // namespace companion
diff --git a/chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.cc b/chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.cc
new file mode 100644
index 0000000..1f5ec929
--- /dev/null
+++ b/chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.cc
@@ -0,0 +1,82 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.h"
+
+#include "base/functional/callback.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/signin/signin_ui_util.h"
+#include "chrome/browser/sync/sync_service_factory.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/side_panel/companion/companion_side_panel_controller_utils.h"
+#include "chrome/browser/unified_consent/unified_consent_service_factory.h"
+#include "components/prefs/pref_service.h"
+#include "components/signin/public/base/consent_level.h"
+#include "components/signin/public/base/signin_metrics.h"
+#include "components/signin/public/base/signin_pref_names.h"
+#include "components/signin/public/identity_manager/identity_manager.h"
+#include "components/unified_consent/unified_consent_service.h"
+#include "content/public/browser/page_navigator.h"
+#include "content/public/browser/web_contents.h"
+
+namespace companion {
+
+SigninDelegateImpl::SigninDelegateImpl(content::WebContents* webui_contents)
+    : webui_contents_(webui_contents) {}
+
+SigninDelegateImpl::~SigninDelegateImpl() = default;
+
+bool SigninDelegateImpl::AllowedSignin() {
+  if (!GetProfile()->GetPrefs()->GetBoolean(prefs::kSigninAllowed)) {
+    return false;
+  }
+
+  if (!SyncServiceFactory::IsSyncAllowed(GetProfile())) {
+    return false;
+  }
+
+  return true;
+}
+
+bool SigninDelegateImpl::IsSignedIn() {
+  return IdentityManagerFactory::GetForProfile(GetProfile())
+      ->HasPrimaryAccount(signin::ConsentLevel::kSignin);
+}
+
+void SigninDelegateImpl::StartSigninFlow() {
+  if (IsSignedIn()) {
+    return;
+  }
+
+  DCHECK(AllowedSignin());
+
+  // Show the promo here.
+  signin_ui_util::EnableSyncFromSingleAccountPromo(
+      GetProfile(),
+      IdentityManagerFactory::GetForProfile(GetProfile())
+          ->GetPrimaryAccountInfo(signin::ConsentLevel::kSignin),
+      signin_metrics::AccessPoint::ACCESS_POINT_SEARCH_COMPANION);
+}
+
+void SigninDelegateImpl::EnableMsbb(bool enable_msbb) {
+  auto* consent_service =
+      UnifiedConsentServiceFactory::GetForProfile(GetProfile());
+  consent_service->SetUrlKeyedAnonymizedDataCollectionEnabled(enable_msbb);
+}
+
+void SigninDelegateImpl::LoadExpsPromUrl(const GURL& exps_promo_url) {
+  content::OpenURLParams params(exps_promo_url, content::Referrer(),
+                                WindowOpenDisposition::NEW_FOREGROUND_TAB,
+                                ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
+                                /*is_renderer_initiated*/ false);
+  auto* browser = companion::GetBrowserForWebContents(webui_contents_);
+  browser->OpenURL(params);
+}
+
+Profile* SigninDelegateImpl::GetProfile() {
+  return Profile::FromBrowserContext(webui_contents_->GetBrowserContext());
+}
+
+}  // namespace companion
diff --git a/chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.h b/chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.h
new file mode 100644
index 0000000..741443a
--- /dev/null
+++ b/chrome/browser/ui/webui/side_panel/companion/signin_delegate_impl.h
@@ -0,0 +1,44 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_SIDE_PANEL_COMPANION_SIGNIN_DELEGATE_IMPL_H_
+#define CHROME_BROWSER_UI_WEBUI_SIDE_PANEL_COMPANION_SIGNIN_DELEGATE_IMPL_H_
+
+#include "base/memory/raw_ptr.h"
+#include "chrome/browser/companion/core/signin_delegate.h"
+
+class Profile;
+
+namespace content {
+class WebContents;
+}  // namespace content
+
+namespace companion {
+
+class SigninDelegateImpl : public SigninDelegate {
+ public:
+  explicit SigninDelegateImpl(content::WebContents* webui_contents);
+  ~SigninDelegateImpl() override;
+
+  // Disallow copy/assign.
+  SigninDelegateImpl(const SigninDelegateImpl&) = delete;
+  SigninDelegateImpl& operator=(const SigninDelegateImpl&) = delete;
+
+  // SigninDelegate implementation.
+  bool AllowedSignin() override;
+  bool IsSignedIn() override;
+  void StartSigninFlow() override;
+  void EnableMsbb(bool enable_msbb) override;
+  void LoadExpsPromUrl(const GURL& exps_promo_url) override;
+
+ private:
+  Profile* GetProfile();
+
+  // The WebContents associated with the companion page.
+  raw_ptr<content::WebContents> webui_contents_;
+};
+
+}  // namespace companion
+
+#endif  // CHROME_BROWSER_UI_WEBUI_SIDE_PANEL_COMPANION_SIGNIN_DELEGATE_IMPL_H_
diff --git a/chrome/browser/vr/chrome_xr_integration_client.cc b/chrome/browser/vr/chrome_xr_integration_client.cc
index e636d8ff..0c336f96 100644
--- a/chrome/browser/vr/chrome_xr_integration_client.cc
+++ b/chrome/browser/vr/chrome_xr_integration_client.cc
@@ -16,6 +16,7 @@
 #include "content/public/browser/browser_xr_runtime.h"
 #include "content/public/browser/media_stream_request.h"
 #include "content/public/browser/xr_install_helper.h"
+#include "content/public/common/content_switches.h"
 #include "device/vr/buildflags/buildflags.h"
 #include "device/vr/public/cpp/features.h"
 #include "device/vr/public/cpp/vr_device_provider.h"
@@ -97,6 +98,25 @@
   std::unique_ptr<content::MediaStreamUI> ui_;
 };
 
+#if BUILDFLAG(IS_ANDROID)
+// If none of the runtimes are enabled, this function will be unused.
+// This is a bit more scalable than wrapping it in all the typedefs
+[[maybe_unused]] bool IsEnabled(const base::CommandLine* command_line,
+                                const std::string& name,
+                                const base::Feature* maybe_feature = nullptr) {
+  // If we don't have a forced runtime we just need to check if the feature is
+  // enabled.
+  if (!command_line->HasSwitch(switches::kWebXrForceRuntime)) {
+    // Either we were passed a feature, in which case we need to check if it's
+    // enabled. Or we weren't, in which case the feature should be enabled.
+    return maybe_feature ? base::FeatureList::IsEnabled(*maybe_feature) : true;
+  }
+
+  return (base::CompareCaseInsensitiveASCII(
+              command_line->GetSwitchValueASCII(switches::kWebXrForceRuntime),
+              name) == 0);
+}
+#endif
 }  // namespace
 
 namespace vr {
@@ -124,16 +144,20 @@
 #if BUILDFLAG(IS_ANDROID)
   // May be unused if all runtimes are disabled.
   [[maybe_unused]] bool preferred_vr_runtime_added = false;
+  [[maybe_unused]] const base::CommandLine* command_line =
+      base::CommandLine::ForCurrentProcess();
 #if BUILDFLAG(ENABLE_OPENXR)
   if (!preferred_vr_runtime_added &&
-      base::FeatureList::IsEnabled(device::features::kOpenXR)) {
+      IsEnabled(command_line, switches::kWebXrRuntimeOpenXr,
+                &device::features::kOpenXR)) {
     providers.emplace_back(std::make_unique<webxr::OpenXrDeviceProvider>());
     preferred_vr_runtime_added = true;
   }
 #endif  // BUILDFLAG(ENABLE_OPENXR)
 #if BUILDFLAG(ENABLE_CARDBOARD)
   if (!preferred_vr_runtime_added &&
-      base::FeatureList::IsEnabled(device::features::kEnableCardboard)) {
+      IsEnabled(command_line, switches::kWebXrRuntimeCardboard,
+                &device::features::kEnableCardboard)) {
     base::android::ScopedJavaLocalRef<jobject>
         j_vr_compositor_delegate_provider =
             vr::Java_VrCompositorDelegateProviderImpl_Constructor(
@@ -145,7 +169,8 @@
   }
 #endif  // BUILDFLAG(ENABLE_CARDBOARD)
 #if BUILDFLAG(ENABLE_GVR_SERVICES)
-  if (!preferred_vr_runtime_added) {
+  if (!preferred_vr_runtime_added &&
+      IsEnabled(command_line, switches::kWebXrRuntimeGVR)) {
     providers.push_back(std::make_unique<device::GvrDeviceProvider>());
     preferred_vr_runtime_added = true;
   }
diff --git a/chrome/build/lacros64.pgo.txt b/chrome/build/lacros64.pgo.txt
index 2d006aa..3550725d 100644
--- a/chrome/build/lacros64.pgo.txt
+++ b/chrome/build/lacros64.pgo.txt
@@ -1 +1 @@
-chrome-chromeos-amd64-generic-main-1684843186-0b7ea4613220a6150a5b4743b8289af87653634d.profdata
+chrome-chromeos-amd64-generic-main-1684857571-35fa0914b2941546c62053cead1c48f1ad2659ad.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 3da2dfe..3f9872a 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-main-1684843186-2f2099b9e76515128f51374611bf7e9a1026034f.profdata
+chrome-linux-main-1684864756-9ab147ace0ed71ea016c69410f36a2e38465c266.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 5384c2e7..1972c9a 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1684857571-07a51ba45bc74a4663a0be33b2abec569c33f563.profdata
+chrome-mac-arm-main-1684871861-47fc1dc1c9568bafb6aa4d0538f28856d7c876ed.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 15fe2e1..4a288df 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1684843186-b56da8f73c9e56f6052e109a34cd6288e928d19a.profdata
+chrome-win32-main-1684853959-9f6d579048a1bae28ed2cc1d1dd9b0ad5f25b576.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index c2d0ea5..7b98a17 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1684843186-f6524f6aadef092f7ede3c5339550e687a405caf.profdata
+chrome-win64-main-1684853959-87454ba8a64b69b178450cd4b66a34fab0e27f3c.profdata
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index 521bf9b..6c74a02 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -399,7 +399,7 @@
 // Enable WebHID on extension service workers.
 BASE_FEATURE(kEnableWebHidOnExtensionServiceWorker,
              "EnableWebHidOnExtensionServiceWorker",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 #endif
 
 // Enable WebUSB on extension service workers.
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index b297018..aaf856b 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -2334,6 +2334,12 @@
 const char kInsecureHashesInTLSHandshakesEnabled[] =
     "ssl.insecure_hash_enabled";
 
+// If true, checks the X.509 keyUsage extension in TLS 1.2 for RSA
+// certificates that chain to a local trust anchor. If false, the checks are
+// disabled.
+const char kRSAKeyUsageForLocalAnchorsEnabled[] =
+    "ssl.rsa_key_usage_for_local_anchors_enabled";
+
 // Boolean that specifies whether the built-in asynchronous DNS client is used.
 const char kBuiltInDnsClientEnabled[] = "async_dns.enabled";
 
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index c5595dd..48bc5bc 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -863,6 +863,7 @@
 extern const char kPostQuantumEnabled[];
 extern const char kEncryptedClientHelloEnabled[];
 extern const char kInsecureHashesInTLSHandshakesEnabled[];
+extern const char kRSAKeyUsageForLocalAnchorsEnabled[];
 
 extern const char kBuiltInDnsClientEnabled[];
 extern const char kDnsOverHttpsMode[];
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.cc b/chrome/renderer/accessibility/read_anything_app_controller.cc
index 9646144..df91c5a6 100644
--- a/chrome/renderer/accessibility/read_anything_app_controller.cc
+++ b/chrome/renderer/accessibility/read_anything_app_controller.cc
@@ -364,7 +364,7 @@
 
   v8::Local<v8::Object> chrome =
       content::GetOrCreateChromeObject(isolate, context);
-  chrome->Set(context, gin::StringToV8(isolate, "readAnything"), handle.ToV8())
+  chrome->Set(context, gin::StringToV8(isolate, "readingMode"), handle.ToV8())
       .Check();
   return controller;
 }
@@ -422,7 +422,7 @@
 
   // TODO(b/1266555): Use v8::Function rather than javascript. If possible,
   // replace this function call with firing an event.
-  std::string script = "chrome.readAnything.showLoading();";
+  std::string script = "chrome.readingMode.showLoading();";
   render_frame_->ExecuteJavaScript(base::ASCIIToUTF16(script));
 
   // When the UI first constructs, this function may be called before tree_id
@@ -516,7 +516,7 @@
   // -- that is, it is awaiting distillation or never requested distillation.
   // TODO(abigailbklein): Use v8::Function rather than javascript. If possible,
   // replace this function call with firing an event.
-  std::string script = "chrome.readAnything.updateContent();";
+  std::string script = "chrome.readingMode.updateContent();";
   render_frame_->ExecuteJavaScript(base::ASCIIToUTF16(script));
 }
 
@@ -525,7 +525,7 @@
   // -- that is, it is awaiting distillation or never requested distillation.
   // TODO(abigailbklein): Use v8::Function rather than javascript. If possible,
   // replace this function call with firing an event.
-  std::string script = "chrome.readAnything.updateSelection();";
+  std::string script = "chrome.readingMode.updateSelection();";
   render_frame_->ExecuteJavaScript(base::ASCIIToUTF16(script));
 }
 
@@ -534,7 +534,7 @@
 
   // TODO(abigailbklein): Use v8::Function rather than javascript. If possible,
   // replace this function call with firing an event.
-  std::string script = "chrome.readAnything.updateTheme();";
+  std::string script = "chrome.readingMode.updateTheme();";
   render_frame_->ExecuteJavaScript(base::ASCIIToUTF16(script));
 }
 
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.h b/chrome/renderer/accessibility/read_anything_app_controller.h
index 28f1f65..0f0f336 100644
--- a/chrome/renderer/accessibility/read_anything_app_controller.h
+++ b/chrome/renderer/accessibility/read_anything_app_controller.h
@@ -66,7 +66,7 @@
   ReadAnythingAppController& operator=(const ReadAnythingAppController&) =
       delete;
 
-  // Installs v8 context for Read Anything and adds chrome.readAnything binding
+  // Installs v8 context for Read Anything and adds chrome.readingMode binding
   // to page.
   static ReadAnythingAppController* Install(content::RenderFrame* render_frame);
 
diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc
index b00d0a9..4a94cfd 100644
--- a/chrome/renderer/chrome_render_frame_observer.cc
+++ b/chrome/renderer/chrome_render_frame_observer.cc
@@ -325,7 +325,7 @@
 
   // Install ReadAnythingAppController on render frames with the Read Anything
   // url, which is chrome-untrusted. ReadAnythingAppController installs v8
-  // bindings in the chrome.readAnything namespace which are consumed by
+  // bindings in the chrome.readingMode namespace which are consumed by
   // read_anything/app.ts, the resource of the Read Anything WebUI.
   if (features::IsReadAnythingEnabled() &&
       render_frame()->GetWebFrame()->GetDocument().Url() ==
diff --git a/chrome/services/speech/soda/proto/soda_api.proto b/chrome/services/speech/soda/proto/soda_api.proto
index ccffa62..aed4795 100644
--- a/chrome/services/speech/soda/proto/soda_api.proto
+++ b/chrome/services/speech/soda/proto/soda_api.proto
@@ -13,7 +13,7 @@
 option optimize_for = LITE_RUNTIME;
 option java_multiple_files = true;
 
-// Next ID to use: 16
+// Next ID to use: 17
 message ExtendedSodaConfigMsg {
   // Number of channels in RAW audio that will be provided to SODA.
   optional int32 channel_count = 1;
@@ -77,6 +77,9 @@
   // In order to enable multilang, ExtendedSodaConfigMsg.language_pack_directory
   // must correctly specify the LP for the primary locale.
   optional MultilangConfig multilang_config = 15;
+
+  // Whether to mask / leave offensive words in recognition.
+  optional bool mask_offensive_words = 16 [default = false];
 }
 
 // Next ID: 3
@@ -208,10 +211,33 @@
 }
 
 message SodaLangIdEvent {
+  enum AsrSwitchResult {
+    // No switch is attempted when:
+    // 1. Multilang is disabled.
+    // 2. top_language_confidence did not meet the sensitivity threshold.
+    // 3. the top detected language is the same as the one currently being
+    // transcribed.
+    // 4. The LangId results were jittery and this event was ignored for being
+    // too short.
+    DEFAULT_NO_SWITCH = 0;
+    // ASR successfully switched to this locale.
+    SWITCH_SUCCEEDED = 1;
+    // ASR attempted to switch to this locale, but could not load the provided
+    // LP.
+    SWITCH_FAILED = 2;
+    // ASR did not attempt to switch because no LP was provided for the locale,
+    // but top_language_confidence met the sensitivity threshold.
+    SWITCH_SKIPPED_NO_LP = 3;
+  }
+
   // Locale, e.g. "en-us" or "af-za"
   optional string language = 1;
+
   // Equal to the internal enum from langid confidence.
   optional int32 confidence_level = 2;
+
+  // Flag indicating whether ASR successfully switched to this locale.
+  optional AsrSwitchResult asr_switch_result = 3;
 }
 
 message SodaResponse {
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 13df3f6..3a578fa 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -289,6 +289,7 @@
     "//chrome/common/search:mojo_bindings",
     "//components/autofill/content/renderer:test_support",
     "//components/enterprise:enterprise",
+    "//components/network_session_configurator/common:common",
     "//components/reporting/util:test_callbacks_support",
     "//components/safe_browsing/content/renderer/phishing_classifier:unit_tests_support",
     "//components/security_interstitials/content:security_interstitial_page",
@@ -3699,7 +3700,6 @@
         "../browser/ui/views/translate/translate_bubble_view_browsertest.cc",
         "../browser/ui/views/upgrade_notification_controller_browsertest.cc",
         "../browser/ui/views/user_education/help_bubble_factory_views_browsertest.cc",
-        "../browser/ui/views/user_education/tip_marquee_view_browsertest.cc",
         "../browser/ui/views/web_apps/web_app_uninstall_dialog_browsertest.cc",
       ]
       if (is_win) {
@@ -7289,6 +7289,7 @@
       "../browser/ui/toolbar/app_menu_icon_controller_unittest.cc",
       "../browser/ui/toolbar/app_menu_model_unittest.cc",
       "../browser/ui/toolbar/back_forward_menu_model_unittest.cc",
+      "../browser/ui/toolbar/chrome_labs_model_unittest.cc",
       "../browser/ui/toolbar/chrome_location_bar_model_delegate_unittest.cc",
       "../browser/ui/toolbar/location_bar_model_unittest.cc",
       "../browser/ui/toolbar/media_router_action_controller_unittest.cc",
@@ -7300,7 +7301,6 @@
       "../browser/ui/toolbar/recent_tabs_sub_menu_model_unittest.cc",
       "../browser/ui/toolbar/toolbar_actions_model_unittest.cc",
       "../browser/ui/url_identity_unittest.cc",
-      "../browser/ui/user_education/active_tab_tracker_unittest.cc",
       "../browser/ui/views/autofill/address_editor_view_unittest.cc",
       "../browser/ui/views/autofill/edit_address_profile_view_unittest.cc",
       "../browser/ui/views/autofill/save_address_profile_view_unittest.cc",
@@ -9262,7 +9262,6 @@
       "../browser/ui/views/tabs/tab_strip_unittest.cc",
       "../browser/ui/views/tabs/tab_unittest.cc",
       "../browser/ui/views/toolbar/chrome_labs_button_unittest.cc",
-      "../browser/ui/views/toolbar/chrome_labs_model_unittest.cc",
       "../browser/ui/views/toolbar/chrome_labs_unittest.cc",
       "../browser/ui/views/toolbar/reload_button_unittest.cc",
       "../browser/ui/views/toolbar/side_panel_toolbar_button_unittest.cc",
@@ -9275,7 +9274,6 @@
       "../browser/ui/views/translate/translate_bubble_view_unittest.cc",
       "../browser/ui/views/user_education/browser_feature_promo_controller_unittest.cc",
       "../browser/ui/views/user_education/help_bubble_view_timeout_unittest.cc",
-      "../browser/ui/views/user_education/tip_marquee_view_unittest.cc",
       "../browser/ui/views/user_education/views_tutorial_unittest.cc",
       "../browser/ui/window_name_prompt/window_name_prompt_unittest.cc",
     ]
diff --git a/chrome/test/DEPS b/chrome/test/DEPS
index f3a5dee..3c799481 100644
--- a/chrome/test/DEPS
+++ b/chrome/test/DEPS
@@ -46,6 +46,7 @@
   "+components/nacl/browser",
   "+components/nacl/common",
   "+components/nacl/renderer",
+  "+components/network_session_configurator/common",
   "+components/network_time",
   "+components/offline_pages/buildflags",
   "+components/offline_pages/core",
diff --git a/chrome/test/base/chromeos/ash_browser_test_starter.cc b/chrome/test/base/chromeos/ash_browser_test_starter.cc
index 857980a..a4a551e1 100644
--- a/chrome/test/base/chromeos/ash_browser_test_starter.cc
+++ b/chrome/test/base/chromeos/ash_browser_test_starter.cc
@@ -9,7 +9,7 @@
 #include "base/command_line.h"
 #include "base/environment.h"
 #include "base/files/file_util.h"
-#include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/task/thread_pool.h"
 #include "base/test/bind.h"
 #include "base/test/test_switches.h"
@@ -22,19 +22,52 @@
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "components/network_session_configurator/common/network_switches.h"
+#include "google_apis/gaia/gaia_switches.h"
+#include "net/test/embedded_test_server/http_response.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/views/views_switches.h"
 
 namespace test {
 
-AshBrowserTestStarter::AshBrowserTestStarter() = default;
+namespace {
+
+using ::net::test_server::HungResponse;
+
+std::unique_ptr<net::test_server::HttpResponse> HandleGaiaURL(
+    const GURL& base_url,
+    const net::test_server::HttpRequest& request) {
+  // Simulate failure for Gaia url request.
+  return std::make_unique<HungResponse>();
+}
+
+}  // namespace
+
 AshBrowserTestStarter::~AshBrowserTestStarter() = default;
 
+AshBrowserTestStarter::AshBrowserTestStarter()
+    : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+  https_server()->RegisterRequestHandler(
+      base::BindRepeating(&HandleGaiaURL, base_url()));
+
+  bool success = https_server()->InitializeAndListen();
+  CHECK(success);
+  https_server()->StartAcceptingConnections();
+}
+
 bool AshBrowserTestStarter::HasLacrosArgument() const {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
       ash::switches::kLacrosChromePath);
 }
 
+net::EmbeddedTestServer* AshBrowserTestStarter::https_server() {
+  return &https_server_;
+}
+
+GURL AshBrowserTestStarter::base_url() {
+  return https_server()->base_url();
+}
+
 bool AshBrowserTestStarter::PrepareEnvironmentForLacros() {
   DCHECK(HasLacrosArgument());
   std::unique_ptr<base::Environment> env(base::Environment::Create());
@@ -89,8 +122,21 @@
   command_line->AppendSwitch(ash::switches::kDisableLacrosKeepAliveForTesting);
   command_line->AppendSwitch(ash::switches::kDisableLoginLacrosOpening);
   command_line->AppendSwitch(switches::kNoStartupWindow);
+
+  std::vector<std::string> lacros_args;
+  lacros_args.emplace_back(base::StringPrintf("--%s", switches::kNoFirstRun));
+  lacros_args.emplace_back(
+      base::StringPrintf("--%s", switches::kIgnoreCertificateErrors));
+  // Override Gaia url in Lacros so that the gaia requests will NOT be handled
+  // with the real internet connection, but with the embedded test server. The
+  // embedded test server will simulate failure of the Gaia url requests which
+  // is expected in testing environment for Gaia authentication flow. This is a
+  // workaround for fixing crbug/1371655.
+  lacros_args.emplace_back(base::StringPrintf("--%s=%s", switches::kGaiaUrl,
+                                              base_url().spec().c_str()));
   command_line->AppendSwitchASCII(ash::switches::kLacrosChromeAdditionalArgs,
-                                  "--no-first-run");
+                                  base::JoinString(lacros_args, "####"));
+
   return true;
 }
 
diff --git a/chrome/test/base/chromeos/ash_browser_test_starter.h b/chrome/test/base/chromeos/ash_browser_test_starter.h
index 7e97331..2038d3ac 100644
--- a/chrome/test/base/chromeos/ash_browser_test_starter.h
+++ b/chrome/test/base/chromeos/ash_browser_test_starter.h
@@ -7,6 +7,8 @@
 
 #include "base/files/scoped_temp_dir.h"
 #include "base/test/scoped_feature_list.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "url/gurl.h"
 
 class InProcessBrowserTest;
 
@@ -33,10 +35,14 @@
   // this no earlier than SetUpOnMainThread().
   void StartLacros(InProcessBrowserTest* test_class_obj);
 
+  net::EmbeddedTestServer* https_server();
+  GURL base_url();
+
  private:
   // This is XDG_RUNTIME_DIR.
   base::ScopedTempDir scoped_temp_dir_xdg_;
   base::test::ScopedFeatureList scoped_feature_list_;
+  net::EmbeddedTestServer https_server_;
 };
 
 }  // namespace test
diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h
index 67adcd3c..270bf56 100644
--- a/chrome/test/base/test_browser_window.h
+++ b/chrome/test/base/test_browser_window.h
@@ -147,6 +147,7 @@
   void ShowSidePanel(
       absl::optional<SidePanelEntryId> entry_id,
       absl::optional<SidePanelOpenTrigger> open_trigger) override {}
+  void ShowChromeLabs() override {}
   SharingDialog* ShowSharingDialog(content::WebContents* contents,
                                    SharingDialogData data) override;
   void ShowUpdateChromeDialog() override {}
diff --git a/chrome/test/data/extensions/webui_untrusted/sanity_check_available_apis_read_anything.js b/chrome/test/data/extensions/webui_untrusted/sanity_check_available_apis_read_anything.js
index c770f2f..5ea27b4 100644
--- a/chrome/test/data/extensions/webui_untrusted/sanity_check_available_apis_read_anything.js
+++ b/chrome/test/data/extensions/webui_untrusted/sanity_check_available_apis_read_anything.js
@@ -15,9 +15,9 @@
   // Deprecated proprietary Chrome APIs unrelated to Extensions.
   'csi',
   'loadTimes',
-  // chrome.readAnything is available in
+  // chrome.readingMode is available in
   // chrome-untrusted://read-anything-side-panel.top-chrome.
-  'readAnything',
+  'readingMode',
   // chrome.runtime is always available for chrome-untrusted://.
   'runtime',
 ];
diff --git a/chrome/test/data/webui/chromeos/personalization_app/wallpaper_collections_element_test.ts b/chrome/test/data/webui/chromeos/personalization_app/wallpaper_collections_element_test.ts
index aeccf595..983b195 100644
--- a/chrome/test/data/webui/chromeos/personalization_app/wallpaper_collections_element_test.ts
+++ b/chrome/test/data/webui/chromeos/personalization_app/wallpaper_collections_element_test.ts
@@ -5,7 +5,7 @@
 import 'chrome://personalization/strings.m.js';
 import 'chrome://webui-test/mojo_webui_test_support.js';
 
-import {emptyState, GooglePhotosEnablementState, kDefaultImageSymbol, PersonalizationRouter, WallpaperActionName, WallpaperCollections, WallpaperGridItem, WallpaperImage} from 'chrome://personalization/js/personalization_app.js';
+import {emptyState, GooglePhotosEnablementState, kDefaultImageSymbol, PersonalizationRouter, WallpaperActionName, WallpaperCollection, WallpaperCollections, WallpaperGridItem, WallpaperImage} from 'chrome://personalization/js/personalization_app.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
 import {assertDeepEquals, assertEquals, assertGE, assertTrue} from 'chrome://webui-test/chai_assert.js';
 import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
@@ -22,6 +22,20 @@
   const routerOriginal = PersonalizationRouter.instance;
   const routerMock = TestMock.fromClass(PersonalizationRouter);
 
+  // A simplified representation of WallpaperCollectionElement tile for
+  // testing.
+  interface Tile {
+    id: string;
+    type: string;
+  }
+  function getTiles(): Tile[] {
+    // Access a private field for testing because iron-list hides elements
+    // that are out of the viewport. Pick just id and type fields for
+    // simpler testing.
+    return (wallpaperCollectionsElement as any)
+        .tiles_.map(({id, type}: Tile) => ({id, type}));
+  }
+
   setup(function() {
     const mocks = baseSetup();
     wallpaperProvider = mocks.wallpaperProvider;
@@ -268,20 +282,6 @@
       const timeOfDayCollectionId =
           loadTimeData.getString('timeOfDayWallpaperCollectionId');
 
-      // A simplified representation of WallpaperCollectionElement tile for
-      // testing.
-      interface Tile {
-        id: string;
-        type: string;
-      }
-      function getTiles(): Tile[] {
-        // Access a private field for testing because iron-list hides elements
-        // that are out of the viewport. Pick just id and type fields for
-        // simpler testing.
-        return (wallpaperCollectionsElement as any)
-            .tiles_.map(({id, type}: Tile) => ({id, type}));
-      }
-
       personalizationStore.data = emptyState();
       // Local images are still loading.
       personalizationStore.data.wallpaper.loading.local.images = true;
@@ -380,4 +380,89 @@
       assertDeepEquals(expectedTiles, tiles, 'tiles expected to match');
     });
   }
+
+  test('no error reopening wallpaper subpage', async () => {
+    // Wallpaper collections are loaded when first navigating to the
+    // wallpaper subpage. First the list of collections, then each
+    // collection, is requested from server - the component somewhat relies
+    // on this order to render correctly. Test what happens when user
+    // navigates to, then away from, and back to the wallpaper collections
+    // subpage. This begins reloading wallpaper while existing wallpaper
+    // data is already populated.
+
+    // Needs a lot of collections to reproduce the error - there must be more
+    // wallpaper collections than tiles that fit on the screen.
+    const generatedCollections: WallpaperCollection[] =
+        Array.from({length: 20}, (i: number) => ({
+                                   id: `generated_collection_${i}`,
+                                   name: `Generated Collection ${i}`,
+                                   descriptionContent: '',
+                                   previews: [{url: createSvgDataUrl(`${i}`)}],
+                                 }));
+    wallpaperProvider.setCollections([
+      ...wallpaperProvider.collections!,
+      ...generatedCollections,
+    ]);
+
+    loadTimeData.overrideValues({isTimeOfDayWallpaperEnabled: true});
+
+    personalizationStore.setReducersEnabled(true);
+    personalizationStore.expectAction(
+        WallpaperActionName.SET_IMAGES_FOR_COLLECTION);
+
+    wallpaperCollectionsElement = initElement(WallpaperCollections);
+
+    await personalizationStore.waitForAction(
+        WallpaperActionName.SET_IMAGES_FOR_COLLECTION);
+
+    const expectedTilesAfterLoading = [
+      {
+        id: '_time_of_day_chromebook_collection',
+        type: 'image_online',
+      },
+      {id: 'local_', type: 'image_local'},
+      {id: 'google_photos_', 'type': 'loading'},
+      {id: 'id_0', type: 'image_online'},
+      {id: 'id_1', type: 'image_online'},
+      {id: 'id_2', type: 'image_online'},
+      ...generatedCollections.map(({id}) => ({id, type: 'image_online'})),
+    ];
+
+    assertDeepEquals(
+        expectedTilesAfterLoading, getTiles(), 'expected tiles should match');
+
+    await teardownElement(wallpaperCollectionsElement);
+
+    // Do not use initElement because it flushes startup tasks, but test
+    // needs to verify an initial state.
+    wallpaperCollectionsElement =
+        document.createElement(WallpaperCollections.is) as
+            WallpaperCollections &
+        HTMLElement;
+
+    // Sets up loading tiles again.
+    assertDeepEquals(
+        [
+          {id: '_time_of_day_chromebook_collection', type: 'loading'},
+          {id: 'local_', type: 'loading'},
+          {id: 'google_photos_', type: 'loading'},
+        ],
+        getTiles().slice(0, 3), 'first special tiles should match');
+    assertGE(getTiles().length, 6, 'at least 6 tiles at first');
+    getTiles().slice(3).forEach((tile, i) => {
+      assertDeepEquals({id: `backdrop_collection_${i}`, type: 'loading'}, tile);
+    });
+
+    // Put the element on the page and wait for network requests to re-fetch
+    // wallpaper collections.
+    personalizationStore.expectAction(
+        WallpaperActionName.SET_IMAGES_FOR_COLLECTION);
+    document.body.appendChild(wallpaperCollectionsElement);
+    await personalizationStore.waitForAction(
+        WallpaperActionName.SET_IMAGES_FOR_COLLECTION);
+
+    assertDeepEquals(
+        expectedTilesAfterLoading, getTiles(),
+        'expected tiles match the second time');
+  });
 });
diff --git a/chrome/test/data/webui/settings/chromeos/BUILD.gn b/chrome/test/data/webui/settings/chromeos/BUILD.gn
index 420b2d9d..2833a96 100644
--- a/chrome/test/data/webui/settings/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/settings/chromeos/BUILD.gn
@@ -46,7 +46,6 @@
     "fake_users_private.js",
     "hotspot_config_dialog_tests.js",
     "hotspot_subpage_tests.js",
-    "hotspot_summary_item_tests.js",
     "input_page_test.js",
     "internet_config_test.js",
     "internet_detail_menu_test.js",
@@ -160,6 +159,7 @@
     "guest_os/test_guest_os_browser_proxy.ts",
 
     "internet_page/cellular_setup_dialog_test.ts",
+    "internet_page/hotspot_summary_item_test.ts",
     "internet_page/internet_detail_subpage_tests.js",
     "internet_page/network_summary_item_test.ts",
     "internet_page/network_summary_test.ts",
diff --git a/chrome/test/data/webui/settings/chromeos/hotspot_summary_item_tests.js b/chrome/test/data/webui/settings/chromeos/hotspot_summary_item_tests.js
deleted file mode 100644
index 52ac5eb..0000000
--- a/chrome/test/data/webui/settings/chromeos/hotspot_summary_item_tests.js
+++ /dev/null
@@ -1,322 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {Router, routes} from 'chrome://os-settings/os_settings.js';
-import {setHotspotConfigForTesting} from 'chrome://resources/ash/common/hotspot/cros_hotspot_config.js';
-import {HotspotAllowStatus, HotspotControlResult, HotspotState} from 'chrome://resources/ash/common/hotspot/cros_hotspot_config.mojom-webui.js';
-import {FakeHotspotConfig} from 'chrome://resources/ash/common/hotspot/fake_hotspot_config.js';
-import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
-import {eventToPromise} from 'chrome://webui-test/test_util.js';
-
-suite('HotspotSummaryItemTest', function() {
-  /** @type {HotspotSummaryItemElement} */
-  let hotspotSummaryItem = null;
-
-  /** @type {?CrosHotspotConfigInterface} */
-  let hotspotConfig_ = null;
-
-  /**
-   * @type {!CrosHotspotConfigObserverInterface}
-   */
-  let hotspotConfigObserver;
-
-  suiteSetup(function() {
-    hotspotConfig_ = new FakeHotspotConfig();
-    setHotspotConfigForTesting(hotspotConfig_);
-  });
-
-  setup(async function() {
-    PolymerTest.clearBody();
-
-    hotspotSummaryItem = document.createElement('hotspot-summary-item');
-    document.body.appendChild(hotspotSummaryItem);
-    flush();
-
-    hotspotConfigObserver = {
-      /** override */
-      onHotspotInfoChanged() {
-        hotspotConfig_.getHotspotInfo().then(response => {
-          hotspotSummaryItem.hotspotInfo = response.hotspotInfo;
-        });
-      },
-    };
-    hotspotConfig_.addObserver(hotspotConfigObserver);
-
-    hotspotConfig_.setFakeHotspotInfo({
-      state: HotspotState.kDisabled,
-      allowStatus: HotspotAllowStatus.kAllowed,
-    });
-    await flushAsync();
-  });
-
-  teardown(function() {
-    hotspotSummaryItem.remove();
-    hotspotSummaryItem = null;
-    Router.getInstance().resetRouteForTesting();
-    hotspotConfig_.reset();
-  });
-
-  function flushAsync() {
-    flush();
-    // Use setTimeout to wait for the next macrotask.
-    return new Promise(resolve => setTimeout(resolve));
-  }
-
-  test(
-      'clicking on subpage arrow routes to hotspot subpage when allowed',
-      async function() {
-        const subpageArrow = hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotSummaryItemRowArrowIcon');
-        assertTrue(!!subpageArrow, 'Subpage arrow should exist');
-        subpageArrow.click();
-        assertEquals(routes.HOTSPOT_DETAIL, Router.getInstance().currentRoute);
-      });
-
-  test(
-      'clicking on hotspot summary row routes to hotspot subpage when allowed',
-      async function() {
-        const hotspotSummaryRow = hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotSummaryItemRow');
-        assertTrue(!!hotspotSummaryRow, 'Hotspot summary row should exist');
-        hotspotSummaryRow.click();
-        assertEquals(routes.HOTSPOT_DETAIL, Router.getInstance().currentRoute);
-      });
-
-  test('UI state when hotspot is allowed and state is off', async function() {
-    const hotspotStateSublabel =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotStateSublabel');
-    const hotspotDisabledSublabelLink =
-        hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotDisabledSublabelLink');
-    const enableToggle =
-        hotspotSummaryItem.shadowRoot.querySelector('#enableHotspotToggle');
-    const hotspotIcon =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotIcon');
-    const subpageArrow = hotspotSummaryItem.shadowRoot.querySelector(
-        '#hotspotSummaryItemRowArrowIcon');
-    const policyIndicator =
-        hotspotSummaryItem.shadowRoot.querySelector('#policyIndicator');
-
-    assertFalse(enableToggle.disabled, 'Toggle should be enabled');
-    assertTrue(!!subpageArrow, 'Subpage arrow should exist');
-    assertFalse(!!policyIndicator, 'Policy indicator should not exist');
-    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
-    assertFalse(hotspotStateSublabel.hidden, 'State sublabel should show');
-    assertEquals(
-        hotspotSummaryItem.i18n('hotspotSummaryStateOff'),
-        hotspotStateSublabel.textContent.trim());
-    assertTrue(
-        hotspotDisabledSublabelLink.hidden,
-        'Disabled sublabel link should hide');
-  });
-
-  test('UI state when hotspot is allowed and state is on', async function() {
-    hotspotConfig_.setFakeHotspotState(HotspotState.kEnabled);
-    await flushAsync();
-
-    const hotspotStateSublabel =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotStateSublabel');
-    const hotspotDisabledSublabelLink =
-        hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotDisabledSublabelLink');
-    const enableToggle =
-        hotspotSummaryItem.shadowRoot.querySelector('#enableHotspotToggle');
-    const hotspotIcon =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotIcon');
-    const subpageArrow = hotspotSummaryItem.shadowRoot.querySelector(
-        '#hotspotSummaryItemRowArrowIcon');
-    const policyIndicator =
-        hotspotSummaryItem.shadowRoot.querySelector('#policyIndicator');
-
-    assertFalse(enableToggle.disabled, 'Toggle should be enabled');
-    assertTrue(!!subpageArrow, 'Subpage arrow should exist');
-    assertFalse(!!policyIndicator, 'Policy indicator should not exist');
-    assertEquals('os-settings:hotspot-enabled', hotspotIcon.icon);
-    assertFalse(hotspotStateSublabel.hidden, 'State sublabel should show');
-    assertEquals(
-        hotspotSummaryItem.i18n('hotspotSummaryStateOn'),
-        hotspotStateSublabel.textContent.trim());
-    assertTrue(
-        hotspotDisabledSublabelLink.hidden,
-        'Disabled sublabel link should hide');
-  });
-
-  test('UI state when disallowed by policy', async function() {
-    hotspotConfig_.setFakeHotspotAllowStatus(
-        HotspotAllowStatus.kDisallowedByPolicy);
-    await flushAsync();
-
-    const hotspotStateSublabel =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotStateSublabel');
-    const hotspotDisabledSublabelLink =
-        hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotDisabledSublabelLink');
-    const enableToggle =
-        hotspotSummaryItem.shadowRoot.querySelector('#enableHotspotToggle');
-    const hotspotIcon =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotIcon');
-    const subpageArrow = hotspotSummaryItem.shadowRoot.querySelector(
-        '#hotspotSummaryItemRowArrowIcon');
-    const policyIndicator =
-        hotspotSummaryItem.shadowRoot.querySelector('#policyIndicator');
-
-    // Toggle should be disabled, subpage arrow should not show.
-    assertTrue(enableToggle.disabled, 'Toggle should be disabled');
-    assertFalse(!!subpageArrow, 'Subpage arrow should not exist');
-    assertTrue(!!policyIndicator, 'Policy indicator should exist');
-    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
-    assertFalse(hotspotStateSublabel.hidden, 'State sublabel should show');
-    assertEquals(
-        hotspotSummaryItem.i18n('hotspotSummaryStateOff'),
-        hotspotStateSublabel.textContent.trim());
-    assertTrue(
-        hotspotDisabledSublabelLink.hidden,
-        'Disabled sublabel link should hide');
-
-    // Verify toggle is able to turn on/off by CrosHotspotConfig even when it is
-    // disabled by policy.
-    hotspotConfig_.setFakeHotspotState(HotspotState.kEnabled);
-    await flushAsync();
-    assertEquals(
-        hotspotSummaryItem.i18n('hotspotSummaryStateOn'),
-        hotspotStateSublabel.textContent.trim());
-    assertEquals('os-settings:hotspot-enabled', hotspotIcon.icon);
-
-    hotspotConfig_.setFakeHotspotState(HotspotState.kDisabled);
-    await flushAsync();
-    assertEquals(
-        hotspotSummaryItem.i18n('hotspotSummaryStateOff'),
-        hotspotStateSublabel.textContent.trim());
-    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
-  });
-
-  test(
-      'UI state when mobile data plan doesn\'t support hotspot',
-      async function() {
-        hotspotConfig_.setFakeHotspotAllowStatus(
-            HotspotAllowStatus.kDisallowedReadinessCheckFail);
-        await flushAsync();
-
-        const hotspotStateSublabel =
-            hotspotSummaryItem.shadowRoot.querySelector(
-                '#hotspotStateSublabel');
-        const hotspotDisabledSublabelLink =
-            hotspotSummaryItem.shadowRoot.querySelector(
-                '#hotspotDisabledSublabelLink');
-        const enableToggle =
-            hotspotSummaryItem.shadowRoot.querySelector('#enableHotspotToggle');
-        const hotspotIcon =
-            hotspotSummaryItem.shadowRoot.querySelector('#hotspotIcon');
-        const subpageArrow = hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotSummaryItemRowArrowIcon');
-        const policyIndicator =
-            hotspotSummaryItem.shadowRoot.querySelector('#policyIndicator');
-
-        // Toggle should be disabled, subpage arrow should not show.
-        assertTrue(enableToggle.disabled, 'Toggle should be disabled');
-        assertFalse(!!subpageArrow, 'Subpage arrow should not exist');
-        assertFalse(!!policyIndicator, 'Policy indicator should not exist');
-        assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
-        assertTrue(hotspotStateSublabel.hidden, 'State sublabel should hide');
-        assertFalse(
-            hotspotDisabledSublabelLink.hidden,
-            'Disabled sublabel link should show');
-        assertEquals(
-            hotspotSummaryItem
-                .i18nAdvanced('hotspotMobileDataNotSupportedSublabelWithLink')
-                .toString(),
-            hotspotDisabledSublabelLink.localizedString);
-      });
-
-  test('UI state when no mobile data connection', async function() {
-    hotspotConfig_.setFakeHotspotAllowStatus(
-        HotspotAllowStatus.kDisallowedNoMobileData);
-    await flushAsync();
-
-    const hotspotStateSublabel =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotStateSublabel');
-    const hotspotDisabledSublabelLink =
-        hotspotSummaryItem.shadowRoot.querySelector(
-            '#hotspotDisabledSublabelLink');
-    const enableToggle =
-        hotspotSummaryItem.shadowRoot.querySelector('#enableHotspotToggle');
-    const hotspotIcon =
-        hotspotSummaryItem.shadowRoot.querySelector('#hotspotIcon');
-    const subpageArrow = hotspotSummaryItem.shadowRoot.querySelector(
-        '#hotspotSummaryItemRowArrowIcon');
-    const policyIndicator =
-        hotspotSummaryItem.shadowRoot.querySelector('#policyIndicator');
-
-    // Toggle should be disabled, subpage arrow should not show.
-    assertTrue(enableToggle.disabled, 'Toggle should be disabled');
-    assertFalse(!!subpageArrow, 'Subpage arrow should not exist');
-    assertFalse(!!policyIndicator, 'Policy indicator should not exist');
-    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
-    assertTrue(hotspotStateSublabel.hidden, 'State sublabel should hide');
-    assertFalse(
-        hotspotDisabledSublabelLink.hidden,
-        'Disabled sublabel link should show');
-    assertEquals(
-        hotspotSummaryItem.i18nAdvanced('hotspotNoMobileDataSublabelWithLink')
-            .toString(),
-        hotspotDisabledSublabelLink.localizedString);
-  });
-
-  test('Toggle button state', async function() {
-    const enableHotspotToggle =
-        hotspotSummaryItem.shadowRoot.querySelector('#enableHotspotToggle');
-    assertTrue(!!enableHotspotToggle, 'Hotspot enable toggl should exist');
-    assertFalse(enableHotspotToggle.checked);
-
-    // Simulate clicking toggle to turn on hotspot and fail.
-    hotspotConfig_.setFakeEnableHotspotResult(
-        HotspotControlResult.kNetworkSetupFailure);
-    enableHotspotToggle.click();
-    await flushAsync();
-    // Toggle should be off.
-    assertFalse(enableHotspotToggle.checked);
-    assertFalse(enableHotspotToggle.disabled);
-
-    // Simulate clicking toggle to turn on hotspot and succeed.
-    let a11yMessagesEventPromise =
-        eventToPromise('cr-a11y-announcer-messages-sent', document.body);
-    hotspotConfig_.setFakeEnableHotspotResult(HotspotControlResult.kSuccess);
-    enableHotspotToggle.click();
-    await flushAsync();
-    // Toggle should be on this time.
-    assertTrue(enableHotspotToggle.checked);
-    assertFalse(enableHotspotToggle.disabled);
-    let a11yMessagesEvent = await a11yMessagesEventPromise;
-    assertTrue(a11yMessagesEvent.detail.messages.includes(
-        hotspotSummaryItem.i18n('hotspotEnabledA11yLabel')));
-
-    // Simulate clicking on toggle to turn off hotspot and succeed.
-    a11yMessagesEventPromise =
-        eventToPromise('cr-a11y-announcer-messages-sent', document.body);
-    hotspotConfig_.setFakeDisableHotspotResult(HotspotControlResult.kSuccess);
-    enableHotspotToggle.click();
-    await flushAsync();
-    // Toggle should be off
-    assertFalse(enableHotspotToggle.checked);
-    assertFalse(enableHotspotToggle.disabled);
-    a11yMessagesEvent = await a11yMessagesEventPromise;
-    assertTrue(a11yMessagesEvent.detail.messages.includes(
-        hotspotSummaryItem.i18n('hotspotDisabledA11yLabel')));
-
-    // Simulate state becoming kEnabling.
-    hotspotConfig_.setFakeHotspotState(HotspotState.kEnabling);
-    await flushAsync();
-    // Toggle should be disabled.
-    assertTrue(enableHotspotToggle.disabled);
-    hotspotConfig_.setFakeHotspotState(HotspotState.kDisabled);
-
-    // Simulate AllowStatus becoming kDisallowedByPolicy.
-    hotspotConfig_.setFakeHotspotAllowStatus(
-        HotspotAllowStatus.kDisallowedByPolicy);
-    await flushAsync();
-    // Toggle should be disabled.
-    assertTrue(enableHotspotToggle.disabled);
-  });
-});
diff --git a/chrome/test/data/webui/settings/chromeos/internet_page/hotspot_summary_item_test.ts b/chrome/test/data/webui/settings/chromeos/internet_page/hotspot_summary_item_test.ts
new file mode 100644
index 0000000..20be47c
--- /dev/null
+++ b/chrome/test/data/webui/settings/chromeos/internet_page/hotspot_summary_item_test.ts
@@ -0,0 +1,329 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'chrome://os-settings/os_settings.js';
+
+import {CrToggleElement, HotspotSummaryItemElement, LocalizedLinkElement, Router, routes} from 'chrome://os-settings/os_settings.js';
+import {setHotspotConfigForTesting} from 'chrome://resources/ash/common/hotspot/cros_hotspot_config.js';
+import {CrosHotspotConfigInterface, CrosHotspotConfigObserverInterface, CrosHotspotConfigObserverRemote, HotspotAllowStatus, HotspotControlResult, HotspotState, WiFiSecurityMode} from 'chrome://resources/ash/common/hotspot/cros_hotspot_config.mojom-webui.js';
+import {FakeHotspotConfig} from 'chrome://resources/ash/common/hotspot/fake_hotspot_config.js';
+import {CrPolicyIndicatorElement} from 'chrome://resources/cr_elements/policy/cr_policy_indicator.js';
+import {IronIconElement} from 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
+import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {assertEquals, assertFalse, assertNull, assertTrue} from 'chrome://webui-test/chai_assert.js';
+import {eventToPromise} from 'chrome://webui-test/test_util.js';
+
+suite('<hotspot-summary-item>', () => {
+  let hotspotSummaryItem: HotspotSummaryItemElement;
+  let hotspotConfig_: CrosHotspotConfigInterface&FakeHotspotConfig;
+  let hotspotConfigObserver: CrosHotspotConfigObserverInterface;
+
+  function queryHotspotStateSublabel(): HTMLElement|null {
+    return hotspotSummaryItem.shadowRoot!.querySelector<HTMLElement>(
+        '#hotspotStateSublabel');
+  }
+
+  function queryHotspotDisabledSublabelLink(): LocalizedLinkElement|null {
+    return hotspotSummaryItem.shadowRoot!.querySelector<LocalizedLinkElement>(
+        '#hotspotDisabledSublabelLink');
+  }
+
+  function queryEnableHotspotToggle(): CrToggleElement|null {
+    return hotspotSummaryItem.shadowRoot!.querySelector<CrToggleElement>(
+        '#enableHotspotToggle');
+  }
+
+  function queryHotspotIcon(): IronIconElement|null {
+    return hotspotSummaryItem.shadowRoot!.querySelector<IronIconElement>(
+        '#hotspotIcon');
+  }
+
+  function queryHotspotSummaryItemRowArrowIcon(): HTMLElement|null {
+    return hotspotSummaryItem.shadowRoot!.querySelector(
+        '#hotspotSummaryItemRowArrowIcon');
+  }
+
+  function queryPolicyIndicator(): CrPolicyIndicatorElement|null {
+    return hotspotSummaryItem.shadowRoot!.querySelector('#policyIndicator');
+  }
+
+  suiteSetup(() => {
+    hotspotConfig_ = new FakeHotspotConfig();
+    setHotspotConfigForTesting(hotspotConfig_);
+  });
+
+  function flushAsync() {
+    flush();
+    // Use setTimeout to wait for the next macrotask.
+    return new Promise(resolve => setTimeout(resolve));
+  }
+
+  setup(async () => {
+    hotspotSummaryItem = document.createElement('hotspot-summary-item');
+    document.body.appendChild(hotspotSummaryItem);
+    flush();
+
+    hotspotConfigObserver = {
+      async onHotspotInfoChanged() {
+        const response = await hotspotConfig_.getHotspotInfo();
+        hotspotSummaryItem.hotspotInfo = response.hotspotInfo;
+      },
+    };
+    hotspotConfig_.addObserver(
+        hotspotConfigObserver as CrosHotspotConfigObserverRemote);
+
+    hotspotConfig_.setFakeHotspotInfo({
+      state: HotspotState.kDisabled,
+      allowStatus: HotspotAllowStatus.kAllowed,
+      clientCount: 0,
+      allowedWifiSecurityModes: [
+        WiFiSecurityMode.MIN_VALUE,
+      ],
+    });
+    await flushAsync();
+  });
+
+  teardown(() => {
+    hotspotSummaryItem.remove();
+    Router.getInstance().resetRouteForTesting();
+    hotspotConfig_.reset();
+  });
+
+  test(
+      'clicking on subpage arrow routes to hotspot subpage when allowed',
+      () => {
+        const subpageArrow = queryHotspotSummaryItemRowArrowIcon();
+        assertTrue(!!subpageArrow, 'Subpage arrow should exist');
+        subpageArrow.click();
+        assertEquals(routes.HOTSPOT_DETAIL, Router.getInstance().currentRoute);
+      });
+
+  test(
+      'clicking on hotspot summary row routes to hotspot subpage when allowed',
+      () => {
+        const hotspotSummaryRow =
+            hotspotSummaryItem.shadowRoot!.querySelector<HTMLElement>(
+                '#hotspotSummaryItemRow');
+        assertTrue(!!hotspotSummaryRow, 'Hotspot summary row should exist');
+        hotspotSummaryRow.click();
+        assertEquals(routes.HOTSPOT_DETAIL, Router.getInstance().currentRoute);
+      });
+
+  test('UI state when hotspot is allowed and state is off', () => {
+    const hotspotStateSublabel = queryHotspotStateSublabel();
+    assertTrue(!!hotspotStateSublabel);
+    const hotspotDisabledSublabelLink = queryHotspotDisabledSublabelLink();
+    assertTrue(!!hotspotDisabledSublabelLink);
+    const enableToggle = queryEnableHotspotToggle();
+    assertTrue(!!enableToggle);
+    const hotspotIcon = queryHotspotIcon();
+    assertTrue(!!hotspotIcon);
+    const subpageArrow = queryHotspotSummaryItemRowArrowIcon();
+    const policyIndicator = queryPolicyIndicator();
+
+    assertFalse(enableToggle.disabled, 'Toggle should be enabled');
+    assertTrue(!!subpageArrow, 'Subpage arrow should exist');
+    assertNull(policyIndicator, 'Policy indicator should not exist');
+    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
+    assertFalse(hotspotStateSublabel.hidden, 'State sublabel should show');
+    assertEquals(
+        hotspotSummaryItem.i18n('hotspotSummaryStateOff'),
+        hotspotStateSublabel.textContent!.trim());
+    assertTrue(
+        hotspotDisabledSublabelLink.hidden,
+        'Disabled sublabel link should hide');
+  });
+
+  test('UI state when hotspot is allowed and state is on', async () => {
+    hotspotConfig_.setFakeHotspotState(HotspotState.kEnabled);
+    await flushAsync();
+
+    const hotspotStateSublabel = queryHotspotStateSublabel();
+    assertTrue(!!hotspotStateSublabel);
+    const hotspotDisabledSublabelLink = queryHotspotDisabledSublabelLink();
+    assertTrue(!!hotspotDisabledSublabelLink);
+    const enableToggle = queryEnableHotspotToggle();
+    assertTrue(!!enableToggle);
+    const hotspotIcon = queryHotspotIcon();
+    assertTrue(!!hotspotIcon);
+    const subpageArrow = queryHotspotSummaryItemRowArrowIcon();
+    const policyIndicator = queryPolicyIndicator();
+
+    assertFalse(enableToggle.disabled, 'Toggle should be enabled');
+    assertTrue(!!subpageArrow, 'Subpage arrow should exist');
+    assertNull(policyIndicator, 'Policy indicator should not exist');
+    assertEquals('os-settings:hotspot-enabled', hotspotIcon.icon);
+    assertFalse(hotspotStateSublabel.hidden, 'State sublabel should show');
+    assertEquals(
+        hotspotSummaryItem.i18n('hotspotSummaryStateOn'),
+        hotspotStateSublabel.textContent!.trim());
+    assertTrue(
+        hotspotDisabledSublabelLink.hidden,
+        'Disabled sublabel link should hide');
+  });
+
+  test('UI state when disallowed by policy', async () => {
+    hotspotConfig_.setFakeHotspotAllowStatus(
+        HotspotAllowStatus.kDisallowedByPolicy);
+    await flushAsync();
+
+    const hotspotStateSublabel = queryHotspotStateSublabel();
+    assertTrue(!!hotspotStateSublabel);
+    const hotspotDisabledSublabelLink = queryHotspotDisabledSublabelLink();
+    assertTrue(!!hotspotDisabledSublabelLink);
+    const enableToggle = queryEnableHotspotToggle();
+    assertTrue(!!enableToggle);
+    const hotspotIcon = queryHotspotIcon();
+    assertTrue(!!hotspotIcon);
+    const subpageArrow = queryHotspotSummaryItemRowArrowIcon();
+    const policyIndicator = queryPolicyIndicator();
+
+    // Toggle should be disabled, subpage arrow should not show.
+    assertTrue(enableToggle.disabled, 'Toggle should be disabled');
+    assertNull(subpageArrow, 'Subpage arrow should not exist');
+    assertTrue(!!policyIndicator, 'Policy indicator should exist');
+    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
+    assertFalse(hotspotStateSublabel.hidden, 'State sublabel should show');
+    assertEquals(
+        hotspotSummaryItem.i18n('hotspotSummaryStateOff'),
+        hotspotStateSublabel.textContent!.trim());
+    assertTrue(
+        hotspotDisabledSublabelLink.hidden,
+        'Disabled sublabel link should hide');
+
+    // Verify toggle is able to turn on/off by CrosHotspotConfig even when it is
+    // disabled by policy.
+    hotspotConfig_.setFakeHotspotState(HotspotState.kEnabled);
+    await flushAsync();
+    assertEquals(
+        hotspotSummaryItem.i18n('hotspotSummaryStateOn'),
+        hotspotStateSublabel.textContent!.trim());
+    assertEquals('os-settings:hotspot-enabled', hotspotIcon.icon);
+
+    hotspotConfig_.setFakeHotspotState(HotspotState.kDisabled);
+    await flushAsync();
+    assertEquals(
+        hotspotSummaryItem.i18n('hotspotSummaryStateOff'),
+        hotspotStateSublabel.textContent!.trim());
+    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
+  });
+
+  test('UI state when mobile data plan doesn\'t support hotspot', async () => {
+    hotspotConfig_.setFakeHotspotAllowStatus(
+        HotspotAllowStatus.kDisallowedReadinessCheckFail);
+    await flushAsync();
+
+    const hotspotStateSublabel = queryHotspotStateSublabel();
+    assertTrue(!!hotspotStateSublabel);
+    const hotspotDisabledSublabelLink = queryHotspotDisabledSublabelLink();
+    assertTrue(!!hotspotDisabledSublabelLink);
+    const enableToggle = queryEnableHotspotToggle();
+    assertTrue(!!enableToggle);
+    const hotspotIcon = queryHotspotIcon();
+    assertTrue(!!hotspotIcon);
+    const subpageArrow = queryHotspotSummaryItemRowArrowIcon();
+    const policyIndicator = queryPolicyIndicator();
+
+    // Toggle should be disabled, subpage arrow should not show.
+    assertTrue(enableToggle.disabled, 'Toggle should be disabled');
+    assertNull(subpageArrow, 'Subpage arrow should not exist');
+    assertNull(policyIndicator, 'Policy indicator should not exist');
+    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
+    assertTrue(hotspotStateSublabel.hidden, 'State sublabel should hide');
+    assertFalse(
+        hotspotDisabledSublabelLink.hidden,
+        'Disabled sublabel link should show');
+    assertEquals(
+        hotspotSummaryItem
+            .i18nAdvanced('hotspotMobileDataNotSupportedSublabelWithLink')
+            .toString(),
+        hotspotDisabledSublabelLink.localizedString);
+  });
+
+  test('UI state when no mobile data connection', async () => {
+    hotspotConfig_.setFakeHotspotAllowStatus(
+        HotspotAllowStatus.kDisallowedNoMobileData);
+    await flushAsync();
+
+    const hotspotStateSublabel = queryHotspotStateSublabel();
+    assertTrue(!!hotspotStateSublabel);
+    const hotspotDisabledSublabelLink = queryHotspotDisabledSublabelLink();
+    assertTrue(!!hotspotDisabledSublabelLink);
+    const enableToggle = queryEnableHotspotToggle();
+    assertTrue(!!enableToggle);
+    const hotspotIcon = queryHotspotIcon();
+    assertTrue(!!hotspotIcon);
+    const subpageArrow = queryHotspotSummaryItemRowArrowIcon();
+    const policyIndicator = queryPolicyIndicator();
+
+    // Toggle should be disabled, subpage arrow should not show.
+    assertTrue(enableToggle.disabled, 'Toggle should be disabled');
+    assertNull(subpageArrow, 'Subpage arrow should not exist');
+    assertNull(policyIndicator, 'Policy indicator should not exist');
+    assertEquals('os-settings:hotspot-disabled', hotspotIcon.icon);
+    assertTrue(hotspotStateSublabel.hidden, 'State sublabel should hide');
+    assertFalse(
+        hotspotDisabledSublabelLink.hidden,
+        'Disabled sublabel link should show');
+    assertEquals(
+        hotspotSummaryItem.i18nAdvanced('hotspotNoMobileDataSublabelWithLink')
+            .toString(),
+        hotspotDisabledSublabelLink.localizedString);
+  });
+
+  test('Toggle button state', async () => {
+    const enableHotspotToggle = queryEnableHotspotToggle();
+    assertTrue(!!enableHotspotToggle, 'Hotspot enable toggl should exist');
+    assertFalse(enableHotspotToggle.checked);
+
+    // Simulate clicking toggle to turn on hotspot and fail.
+    hotspotConfig_.setFakeEnableHotspotResult(
+        HotspotControlResult.kNetworkSetupFailure);
+    enableHotspotToggle.click();
+    await flushAsync();
+    // Toggle should be off.
+    assertFalse(enableHotspotToggle.checked);
+    assertFalse(enableHotspotToggle.disabled);
+
+    // Simulate clicking toggle to turn on hotspot and succeed.
+    let a11yMessagesEventPromise =
+        eventToPromise('cr-a11y-announcer-messages-sent', document.body);
+    hotspotConfig_.setFakeEnableHotspotResult(HotspotControlResult.kSuccess);
+    enableHotspotToggle.click();
+    await flushAsync();
+    // Toggle should be on this time.
+    assertTrue(enableHotspotToggle.checked);
+    assertFalse(enableHotspotToggle.disabled);
+    let a11yMessagesEvent = await a11yMessagesEventPromise;
+    assertTrue(a11yMessagesEvent.detail.messages.includes(
+        hotspotSummaryItem.i18n('hotspotEnabledA11yLabel')));
+
+    // Simulate clicking on toggle to turn off hotspot and succeed.
+    a11yMessagesEventPromise =
+        eventToPromise('cr-a11y-announcer-messages-sent', document.body);
+    hotspotConfig_.setFakeDisableHotspotResult(HotspotControlResult.kSuccess);
+    enableHotspotToggle.click();
+    await flushAsync();
+    // Toggle should be off
+    assertFalse(enableHotspotToggle.checked);
+    assertFalse(enableHotspotToggle.disabled);
+    a11yMessagesEvent = await a11yMessagesEventPromise;
+    assertTrue(a11yMessagesEvent.detail.messages.includes(
+        hotspotSummaryItem.i18n('hotspotDisabledA11yLabel')));
+
+    // Simulate state becoming kEnabling.
+    hotspotConfig_.setFakeHotspotState(HotspotState.kEnabling);
+    await flushAsync();
+    // Toggle should be disabled.
+    assertTrue(enableHotspotToggle.disabled);
+    hotspotConfig_.setFakeHotspotState(HotspotState.kDisabled);
+
+    // Simulate AllowStatus becoming kDisallowedByPolicy.
+    hotspotConfig_.setFakeHotspotAllowStatus(
+        HotspotAllowStatus.kDisallowedByPolicy);
+    await flushAsync();
+    // Toggle should be disabled.
+    assertTrue(enableHotspotToggle.disabled);
+  });
+});
diff --git a/chrome/test/data/webui/settings/chromeos/kerberos_page/kerberos_accounts_subpage_test.js b/chrome/test/data/webui/settings/chromeos/kerberos_page/kerberos_accounts_subpage_test.js
index e3ad29f..ae0d73d 100644
--- a/chrome/test/data/webui/settings/chromeos/kerberos_page/kerberos_accounts_subpage_test.js
+++ b/chrome/test/data/webui/settings/chromeos/kerberos_page/kerberos_accounts_subpage_test.js
@@ -370,6 +370,9 @@
     browserProxy = new TestKerberosAccountsBrowserProxy();
     KerberosAccountsBrowserProxyImpl.setInstanceForTesting(browserProxy);
     PolymerTest.clearBody();
+
+    // Start test with the "Remember password by default" feature enabled.
+    loadTimeData.overrideValues({kerberosRememberPasswordByDefault: true});
     createDialog(null);
   });
 
@@ -454,14 +457,25 @@
     flush();
   }
 
-  // Verifies expected states if no account is preset.
-  test('StatesWithoutPresetAccount', async () => {
+  // Verifies expected states if no account is preset and password should be
+  // remembered by default.
+  test('StatesWithoutPresetAccountPasswordRemembered', async () => {
     assertTrue(title.startsWith('Add'));
     assertEquals('Add', actionButton.innerText);
     assertFalse(username.disabled);
     assertEquals('', username.value);
     assertEquals('', password.value);
     assertConfig(loadTimeData.getString('defaultKerberosConfig'));
+    assertTrue(rememberPassword.checked);
+  });
+
+  // Verifies the rememberPassword state if no account is preset and password
+  // should not be remembered by default.
+  test('StatesWithoutPresetAccountPasswordNotRemembered', async () => {
+    loadTimeData.overrideValues({kerberosRememberPasswordByDefault: false});
+    createDialog(null);
+    flush();
+
     assertFalse(rememberPassword.checked);
   });
 
@@ -477,16 +491,31 @@
     // depends on the passwordWasRemembered property of the account.
   });
 
-  // The password input field is empty and 'Remember password' is not preset
-  // if |passwordWasRemembered| is false.
+  // The password input field is empty and 'Remember password' is checked if
+  // |passwordWasRemembered| is false and the password should be remembered by
+  // default.
   test('PasswordNotPresetIfPasswordWasNotRemembered', function() {
     assertFalse(TEST_KERBEROS_ACCOUNTS[0].passwordWasRemembered);
     createDialog(TEST_KERBEROS_ACCOUNTS[0]);
     assertEquals('', password.value);
+    assertTrue(rememberPassword.checked);
+  });
+
+  // The password input field is empty and 'Remember password' is not checked if
+  // |passwordWasRemembered| is false and the password should not be remembered
+  // by default.
+  test('PasswordPresetIfPasswordWasNotRememberedAndFeatureEnabled', function() {
+    loadTimeData.overrideValues({kerberosRememberPasswordByDefault: false});
+    createDialog(null);
+    flush();
+
+    assertFalse(TEST_KERBEROS_ACCOUNTS[0].passwordWasRemembered);
+    createDialog(TEST_KERBEROS_ACCOUNTS[0]);
+    assertEquals('', password.value);
     assertFalse(rememberPassword.checked);
   });
 
-  // The password input field is not empty and 'Remember password' is preset
+  // The password input field is not empty and 'Remember password' is checked
   // if |passwordWasRemembered| is true.
   test('PasswordPresetIfPasswordWasRemembered', function() {
     assertTrue(TEST_KERBEROS_ACCOUNTS[1].passwordWasRemembered);
@@ -523,22 +552,24 @@
     loadTimeData.overrideValues({kerberosRememberPasswordEnabled: true});
   });
 
-  test('RememberPasswordVisibleOnUserSessions', function() {
+  test('RememberPasswordVisibleAndCheckedOnUserSessions', function() {
     assertFalse(loadTimeData.getBoolean('isGuest'));
     createDialog(null);
     flush();
 
     assertFalse(
         dialog.shadowRoot.querySelector('#rememberPasswordContainer').hidden);
+    assertTrue(rememberPassword.checked);
   });
 
-  test('RememberPasswordHiddenOnMgs', function() {
+  test('RememberPasswordHiddenAndNotCheckedOnMgs', function() {
     loadTimeData.overrideValues({isGuest: true});
     createDialog(null);
     flush();
 
     assertTrue(
         dialog.shadowRoot.querySelector('#rememberPasswordContainer').hidden);
+    assertFalse(rememberPassword.checked);
 
     // Reset for further tests.
     loadTimeData.overrideValues({isGuest: false});
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
index c1491f9..fb39561a 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -321,11 +321,6 @@
    'hotspot_subpage_tests.js',
    {enabled: ['ash::features::kHotspot']},
  ],
- [
-   'HotspotSummaryItem',
-   'hotspot_summary_item_tests.js',
-   {enabled: ['ash::features::kHotspot']},
- ],
  ['InputPage', 'input_page_test.js'],
  ['InternetConfig', 'internet_config_test.js'],
  ['InternetDetailMenu', 'internet_detail_menu_test.js'],
@@ -350,6 +345,11 @@
    'internet_page/cellular_setup_dialog_test.js'
  ],
  [
+   'InternetPageHotspotSummaryItem',
+   'internet_page/hotspot_summary_item_test.js',
+   {enabled: ['ash::features::kHotspot']},
+ ],
+ [
    'InternetPageInternetDetailSubpage',
    'internet_page/internet_detail_subpage_tests.js', {
      enabled: [
diff --git a/chrome/test/data/webui/side_panel/read_anything/connected_callback_show_loading_screen.js b/chrome/test/data/webui/side_panel/read_anything/connected_callback_show_loading_screen.js
index 561191a..2a61f5e 100644
--- a/chrome/test/data/webui/side_panel/read_anything/connected_callback_show_loading_screen.js
+++ b/chrome/test/data/webui/side_panel/read_anything/connected_callback_show_loading_screen.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
diff --git a/chrome/test/data/webui/side_panel/read_anything/on_selection_change_nothing_selected_on_loading_screen_selection.js b/chrome/test/data/webui/side_panel/read_anything/on_selection_change_nothing_selected_on_loading_screen_selection.js
index c749988..dc8f710 100644
--- a/chrome/test/data/webui/side_panel/read_anything/on_selection_change_nothing_selected_on_loading_screen_selection.js
+++ b/chrome/test/data/webui/side_panel/read_anything/on_selection_change_nothing_selected_on_loading_screen_selection.js
@@ -10,14 +10,14 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
   const emptyState = readAnythingApp.getElementById('empty-state-container');
 
   let selectionChanged = false;
-  chrome.readAnything.onSelectionChange =
+  chrome.readingMode.onSelectionChange =
       (_anchorNodeId, _anchorOffset, _focusNodeId, _focusOffset) => {
         selectionChanged = true;
       };
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_clear_container.js b/chrome/test/data/webui/side_panel/read_anything/update_content_clear_container.js
index 021ab62..f346ab3 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_clear_container.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_clear_container.js
@@ -11,7 +11,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -52,7 +52,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree1, [2]);
+  chrome.readingMode.setContentForTesting(axTree1, [2]);
   const expected1 = '<div>First set of content.</div>';
   assertContainerInnerHTML(expected1);
 
@@ -74,7 +74,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree2, [2]);
+  chrome.readingMode.setContentForTesting(axTree2, [2]);
   const expected2 = '<div>Second set of content.</div>';
   assertContainerInnerHTML(expected2);
 
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_heading.js b/chrome/test/data/webui/side_panel/read_anything/update_content_heading.js
index ccff9a10..cb5ed96 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_heading.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_heading.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -122,7 +122,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4, 6, 8, 10, 12]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4, 6, 8, 10, 12]);
   const expected = '<div><h1>This is an h1.</h1><h2>This is an h2.</h2>' +
       '<h3>This is an h3.</h3><h4>This is an h4.</h4>' +
       '<h5>This is an h5.</h5><h6>This is an h6.</h6></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_hides_loading_screen.js b/chrome/test/data/webui/side_panel/read_anything/update_content_hides_loading_screen.js
index c13d797..76968b2 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_hides_loading_screen.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_hides_loading_screen.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -51,7 +51,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2]);
+  chrome.readingMode.setContentForTesting(axTree, [2]);
 
   assertEquals(
       readAnythingApp.getElementById('empty-state-container').hidden, true);
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_interactive_element.js b/chrome/test/data/webui/side_panel/read_anything/update_content_interactive_element.js
index 384a410..6f4ade6 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_interactive_element.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_interactive_element.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -70,7 +70,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><p>hello world</p></div>';
   assertContainerInnerHTML(expected);
 
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_language_child_node_diff_lang.js b/chrome/test/data/webui/side_panel/read_anything/update_content_language_child_node_diff_lang.js
index a4097df..ab7fea921 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_language_child_node_diff_lang.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_language_child_node_diff_lang.js
@@ -10,7 +10,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -88,7 +88,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><p lang="en">This is in English</p>' +
       '<p lang="es">Esto es en español' +
       '<a href="http://www.google.cn/" lang="zh">' +
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_language_parent_lang_set.js b/chrome/test/data/webui/side_panel/read_anything/update_content_language_parent_lang_set.js
index 81e38c0..8aa8651 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_language_parent_lang_set.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_language_parent_lang_set.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -72,7 +72,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2]);
+  chrome.readingMode.setContentForTesting(axTree, [2]);
   const expected = '<div><p lang="en">This is in English' +
       '<a href="http://www.google.com/">This link has no language set</a>' +
       '</p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_link.js b/chrome/test/data/webui/side_panel/read_anything/update_content_link.js
index b1503f4..761db336 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_link.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_link.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -72,7 +72,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><a href="http://www.google.com">This is a link.' +
       '</a><a href="http://www.youtube.com">This is another link.</a></div>';
   assertContainerInnerHTML(expected);
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_link_bad_input.js b/chrome/test/data/webui/side_panel/read_anything/update_content_link_bad_input.js
index f0beeb5..fc028b03 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_link_bad_input.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_link_bad_input.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -64,7 +64,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><a>This link does not have a url.</a><img></div>';
   assertContainerInnerHTML(expected);
 
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_no_content_nodes.js b/chrome/test/data/webui/side_panel/read_anything/update_content_no_content_nodes.js
index a5cd96f..5dba870 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_no_content_nodes.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_no_content_nodes.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -50,7 +50,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, []);
+  chrome.readingMode.setContentForTesting(axTree, []);
   const expected = '';
   assertContainerInnerHTML(expected);
 
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_paragraph.js b/chrome/test/data/webui/side_panel/read_anything/update_content_paragraph.js
index 1b7fd54..7768c00 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_paragraph.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_paragraph.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -70,7 +70,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><p>This is a paragraph</p>' +
       '<p>This is a second paragraph</p></div>';
   assertContainerInnerHTML(expected);
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_selection.js b/chrome/test/data/webui/side_panel/read_anything/update_content_selection.js
index 3d48fca..cc3207e 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_selection.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_selection.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -41,7 +41,7 @@
     // asynchronously, the test must wait for this function to be called;
     // therefore we fire a custom event on-selection-change-for-text here
     // for the test to await.
-    chrome.readAnything.onSelectionChange =
+    chrome.readingMode.onSelectionChange =
         (anchorNodeId, anchorOffset, focusNodeId, focusOffset) => {
           readAnythingApp.dispatchEvent(
               new CustomEvent('on-selection-change-for-test', {
@@ -120,7 +120,7 @@
     },
   };
   setOnSelectionChangeForTest();
-  chrome.readAnything.setContentForTesting(axTree, []);
+  chrome.readingMode.setContentForTesting(axTree, []);
   // The expected string contains the complete text of each node in the
   // selection.
   const expected = '<div><p>World</p><p>Friend!</p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards.js b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards.js
index 84cdcc5e..e561d1c 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -41,7 +41,7 @@
     // asynchronously, the test must wait for this function to be called;
     // therefore we fire a custom event on-selection-change-for-text here
     // for the test to await.
-    chrome.readAnything.onSelectionChange =
+    chrome.readingMode.onSelectionChange =
         (anchorNodeId, anchorOffset, focusNodeId, focusOffset) => {
           readAnythingApp.dispatchEvent(
               new CustomEvent('on-selection-change-for-test', {
@@ -120,7 +120,7 @@
     },
   };
   setOnSelectionChangeForTest();
-  chrome.readAnything.setContentForTesting(axTree, []);
+  chrome.readingMode.setContentForTesting(axTree, []);
   // The expected string contains the complete text of each node in the
   // selection.
   const expected = '<div><p>Hello</p><p>World</p><p>Friend!</p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards_with_inline_text.js b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards_with_inline_text.js
index ee6a1e25..b6dbfc3 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards_with_inline_text.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_backwards_with_inline_text.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -41,7 +41,7 @@
     // asynchronously, the test must wait for this function to be called;
     // therefore we fire a custom event on-selection-change-for-text here
     // for the test to await.
-    chrome.readAnything.onSelectionChange =
+    chrome.readingMode.onSelectionChange =
         (anchorNodeId, anchorOffset, focusNodeId, focusOffset) => {
           readAnythingApp.dispatchEvent(
               new CustomEvent('on-selection-change-for-test', {
@@ -116,7 +116,7 @@
     },
   };
   setOnSelectionChangeForTest();
-  chrome.readAnything.setContentForTesting(axTree, []);
+  chrome.readingMode.setContentForTesting(axTree, []);
   // The expected string contains the complete text of each node in the
   // selection.
   const expected = '<div><p>World<a>Friend</a></p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_outside_distilled_content.js b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_outside_distilled_content.js
index 547742e..c36f03f9 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_outside_distilled_content.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_outside_distilled_content.js
@@ -10,7 +10,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -97,7 +97,7 @@
       is_backward: false,
     },
   };
-  chrome.readAnything.setContentForTesting(axTree, [2]);
+  chrome.readingMode.setContentForTesting(axTree, [2]);
   // The selection is outside the content nodes.The expected string contains
   // the complete text of each node in the selection.
   const expected = '<div><p>World</p><p>Friend!</p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_partially_outside_distilled_content.js b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_partially_outside_distilled_content.js
index 86b8deb..6317f412 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_partially_outside_distilled_content.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_partially_outside_distilled_content.js
@@ -10,7 +10,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -97,7 +97,7 @@
       is_backward: false,
     },
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   // The selection has content inside and outside the content nodes. The
   // expected string contains the complete text of each node in the selection.
   const expected = '<div><p>Hello</p><p>World</p><p>Friend!</p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_with_inline_text.js b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_with_inline_text.js
index 0002a96..7472c49 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_selection_with_inline_text.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_selection_with_inline_text.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -41,7 +41,7 @@
     // asynchronously, the test must wait for this function to be called;
     // therefore we fire a custom event on-selection-change-for-text here
     // for the test to await.
-    chrome.readAnything.onSelectionChange =
+    chrome.readingMode.onSelectionChange =
         (anchorNodeId, anchorOffset, focusNodeId, focusOffset) => {
           readAnythingApp.dispatchEvent(
               new CustomEvent('on-selection-change-for-test', {
@@ -115,7 +115,7 @@
     },
   };
   setOnSelectionChangeForTest();
-  chrome.readAnything.setContentForTesting(axTree, []);
+  chrome.readingMode.setContentForTesting(axTree, []);
   // The expected string contains the complete text of each node in the
   // selection.
   const expected = '<div><p>World<a>Friend</a></p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_set_selected_text.js b/chrome/test/data/webui/side_panel/read_anything/update_content_set_selected_text.js
index 72e2e4e..ef5f411 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_set_selected_text.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_set_selected_text.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -41,7 +41,7 @@
     // asynchronously, the test must wait for this function to be called;
     // therefore we fire a custom event on-selection-change-for-text here
     // for the test to await.
-    chrome.readAnything.onSelectionChange =
+    chrome.readingMode.onSelectionChange =
         (anchorNodeId, anchorOffset, focusNodeId, focusOffset) => {
           readAnythingApp.dispatchEvent(
               new CustomEvent('on-selection-change-for-test', {
@@ -86,12 +86,12 @@
     ],
   };
   setOnSelectionChangeForTest();
-  chrome.readAnything.setContentForTesting(axTree, [1]);
+  chrome.readingMode.setContentForTesting(axTree, [1]);
   const expected = '<div>HelloWorldFriend</div>';
   assertContainerInnerHTML(expected);
 
   // When the selection is set, readAnythingApp listens for the selection
-  // change event and calls chrome.readAnything.onSelectionChange. This test
+  // change event and calls chrome.readingMode.onSelectionChange. This test
   // overrides that method and fires a custom event
   // 'on-selection-change-for-test' with the parameters to onSelectionChange
   // stored in details. Here, we check the values of the parameters of
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_static_text.js b/chrome/test/data/webui/side_panel/read_anything/update_content_static_text.js
index 6777e81..6fea34f 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_static_text.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_static_text.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -56,7 +56,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 3]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 3]);
   const expected = '<div>This is some text.This is some more text.</div>';
   assertContainerInnerHTML(expected);
 
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_static_text_bad_input.js b/chrome/test/data/webui/side_panel/read_anything/update_content_static_text_bad_input.js
index d8755b5..3f1feec6 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_static_text_bad_input.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_static_text_bad_input.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -49,7 +49,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2]);
+  chrome.readingMode.setContentForTesting(axTree, [2]);
   const expected = '';
   assertContainerInnerHTML(expected);
 
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction.js b/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction.js
index 30c01e8..83d5afa 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -72,7 +72,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><p dir="ltr">This is left to right writing</p>' +
       '<p dir="rtl">This is right to left writing</p></div>';
   assertContainerInnerHTML(expected);
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_parent_node_diff_dir.js b/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_parent_node_diff_dir.js
index b5d3734..7f6cf6e8 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_parent_node_diff_dir.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_parent_node_diff_dir.js
@@ -10,7 +10,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -74,7 +74,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2]);
+  chrome.readingMode.setContentForTesting(axTree, [2]);
   const expected = '<div><p dir="ltr">This is ltr' +
       '<a dir="rtl" href="http://www.google.com/">' +
       'This link is rtl</a></p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_vertical_dir.js b/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_vertical_dir.js
index d028cbe..2c10709 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_vertical_dir.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_text_direction_vertical_dir.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -72,7 +72,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 4]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 4]);
   const expected = '<div><p dir="auto">This should be auto</p>' +
       '<p dir="auto">This should be also be auto</p></div>';
   assertContainerInnerHTML(expected);
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_bold.js b/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_bold.js
index c56093b1..cc34b58 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_bold.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_bold.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -85,7 +85,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2, 5]);
+  chrome.readingMode.setContentForTesting(axTree, [2, 5]);
   const expected = '<div><p>Regular text.<b>This should be bolded.</b></p>' +
       '<p><b>Bolded text.</b><b>Bolded text.</b></p></div>';
   assertContainerInnerHTML(expected);
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_overline.js b/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_overline.js
index 8894d050..245c433e 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_overline.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_content_text_style_overline.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -72,7 +72,7 @@
       },
     ],
   };
-  chrome.readAnything.setContentForTesting(axTree, [2]);
+  chrome.readingMode.setContentForTesting(axTree, [2]);
   const expected = '<div><p><span style="text-decoration: overline;">This ' +
       'should be overlined.</span>Regular text.<b style="text-decoration: ' +
       'overline;">This is overlined and bolded.</b></p></div>';
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_theme_background_color.js b/chrome/test/data/webui/side_panel/read_anything/update_theme_background_color.js
index e9b7ee6..192347b 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_theme_background_color.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_theme_background_color.js
@@ -9,13 +9,13 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
   const container = readAnythingApp.getElementById('container');
 
-  chrome.readAnything.setThemeForTesting(
+  chrome.readingMode.setThemeForTesting(
       'f', 1, 0, /* SkColorSetRGB(0xFD, 0xE2, 0x93) = */ 4294828691, 1, 0);
   const expected = 'rgb(253, 226, 147)';  // #FDE293
   const actual = getComputedStyle(container).backgroundColor;
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_theme_font_name.js b/chrome/test/data/webui/side_panel/read_anything/update_theme_font_name.js
index 51e2dd4c..3ccf571 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_theme_font_name.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_theme_font_name.js
@@ -9,7 +9,7 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
@@ -31,25 +31,25 @@
     assertEquals(expected, getComputedStyle(container).fontFamily);
   };
 
-  chrome.readAnything.setThemeForTesting('Poppins', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('Poppins', 18.0, 0, 0, 1, 0);
   assertFontName('Poppins');
 
-  chrome.readAnything.setThemeForTesting('Sans-serif', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('Sans-serif', 18.0, 0, 0, 1, 0);
   assertFontName('sans-serif');
 
-  chrome.readAnything.setThemeForTesting('Serif', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('Serif', 18.0, 0, 0, 1, 0);
   assertFontName('serif');
 
-  chrome.readAnything.setThemeForTesting('Comic Neue', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('Comic Neue', 18.0, 0, 0, 1, 0);
   assertFontName('"Comic Neue"');
 
-  chrome.readAnything.setThemeForTesting('Lexend Deca', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('Lexend Deca', 18.0, 0, 0, 1, 0);
   assertFontName('"Lexend Deca"');
 
-  chrome.readAnything.setThemeForTesting('EB Garamond', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('EB Garamond', 18.0, 0, 0, 1, 0);
   assertFontName('"EB Garamond"');
 
-  chrome.readAnything.setThemeForTesting('STIX Two Text', 18.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('STIX Two Text', 18.0, 0, 0, 1, 0);
   assertFontName('"STIX Two Text"');
 
   return result;
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_theme_font_size.js b/chrome/test/data/webui/side_panel/read_anything/update_theme_font_size.js
index 5de1eeb..c0e5c19 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_theme_font_size.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_theme_font_size.js
@@ -9,13 +9,13 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
   const container = readAnythingApp.getElementById('container');
 
-  chrome.readAnything.setThemeForTesting('Poppins', 1.0, 0, 0, 1, 0);
+  chrome.readingMode.setThemeForTesting('Poppins', 1.0, 0, 0, 1, 0);
   const expected = '16px';  // 1em = 16px
   const actual = getComputedStyle(container).fontSize;
   const isEqual = actual === expected;
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_theme_foreground_color.js b/chrome/test/data/webui/side_panel/read_anything/update_theme_foreground_color.js
index 0fa9379..836864f 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_theme_foreground_color.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_theme_foreground_color.js
@@ -9,13 +9,13 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
   const container = readAnythingApp.getElementById('container');
 
-  chrome.readAnything.setThemeForTesting(
+  chrome.readingMode.setThemeForTesting(
       'f', 1, /* SkColorSetRGB(0x33, 0x36, 0x39) = */ 4281546297, 0, 1, 0);
   const expected = 'rgb(51, 54, 57)';  // #333639
   const actual = getComputedStyle(container).color;
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_theme_letter_spacing.js b/chrome/test/data/webui/side_panel/read_anything/update_theme_letter_spacing.js
index f4c2213b..e1a7e82 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_theme_letter_spacing.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_theme_letter_spacing.js
@@ -9,13 +9,13 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
   const container = readAnythingApp.getElementById('container');
 
-  chrome.readAnything.setThemeForTesting('f', 1, 0, 0, 1, 3);
+  chrome.readingMode.setThemeForTesting('f', 1, 0, 0, 1, 3);
   // Very loose letter letter spacing = 0.1em, font size = 1em = 16px
   const expected = '1.6px';
   const actual = getComputedStyle(container).letterSpacing;
diff --git a/chrome/test/data/webui/side_panel/read_anything/update_theme_line_spacing.js b/chrome/test/data/webui/side_panel/read_anything/update_theme_line_spacing.js
index 8f50cdc..9943a62 100644
--- a/chrome/test/data/webui/side_panel/read_anything/update_theme_line_spacing.js
+++ b/chrome/test/data/webui/side_panel/read_anything/update_theme_line_spacing.js
@@ -9,13 +9,13 @@
 // ReadAnythingAppController, onConnected creates mojo pipes to connect to the
 // rest of the Read Anything feature, which we are not testing here.
 (() => {
-  chrome.readAnything.onConnected = () => {};
+  chrome.readingMode.onConnected = () => {};
 
   const readAnythingApp =
       document.querySelector('read-anything-app').shadowRoot;
   const container = readAnythingApp.getElementById('container');
 
-  chrome.readAnything.setThemeForTesting('Poppins', 1.0, 0, 0, 2, 0);
+  chrome.readingMode.setThemeForTesting('Poppins', 1.0, 0, 0, 2, 0);
   const expected = '24px';  // 1.5 times the 1em (16px) font size
   const actual = getComputedStyle(container).lineHeight;
   const isEqual = actual === expected;
diff --git a/chrome/test/interaction/interaction_test_util_browser.cc b/chrome/test/interaction/interaction_test_util_browser.cc
index 9bf46d97..d736baa 100644
--- a/chrome/test/interaction/interaction_test_util_browser.cc
+++ b/chrome/test/interaction/interaction_test_util_browser.cc
@@ -6,12 +6,14 @@
 
 #include <memory>
 
+#include "base/command_line.h"
 #include "base/strings/strcat.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/test/test_browser_ui.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h"
 #include "chrome/browser/ui/views/tabs/tab.h"
@@ -22,7 +24,6 @@
 #include "ui/base/interaction/element_tracker.h"
 #include "ui/base/interaction/interaction_test_util.h"
 #include "ui/base/test/ui_controls.h"
-#include "ui/base/ui_base_features.h"
 #include "ui/events/event.h"
 #include "ui/events/types/event_type.h"
 #include "ui/views/controls/webview/webview.h"
@@ -36,18 +37,8 @@
 #include "ui/base/interaction/interaction_test_util_mac.h"
 #endif
 
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
-#define SUPPORTS_PIXEL_TESTS 1
-#include "base/command_line.h"
-#include "chrome/browser/ui/test/test_browser_ui.h"
-#else
-#define SUPPORTS_PIXEL_TESTS 0
-#endif
-
 namespace {
 
-#if SUPPORTS_PIXEL_TESTS
-
 // Facilitates pixel testing with more versatile naming than TestBrowserUi.
 class PixelTestUi : public TestBrowserUi {
  public:
@@ -62,19 +53,14 @@
   void WaitForUserDismissal() override { NOTREACHED(); }
 
   bool VerifyUi() override {
+    return VerifyUiWithResult() != ui::test::ActionResult::kFailed;
+  }
+
+  ui::test::ActionResult VerifyUiWithResult() {
     auto* const test_info =
         testing::UnitTest::GetInstance()->current_test_info();
-    std::string test_name =
+    const std::string test_name =
         base::StrCat({test_info->test_case_name(), "_", test_info->name()});
-
-    // For the CR2023 screenshots add a "CR2023" prefix so that they are
-    // compared exclusively with previous CR2023 screenshots. We would like Skia
-    // Gold to catch regressions in both CR2023 and non-CR2023.
-    // TODO(crbug.com/1444466): remove this after CR2023 launch.
-    if (features::IsChromeRefresh2023()) {
-      test_name = "CR2023_" + test_name;
-    }
-
     const std::string screenshot_name =
         screenshot_name_.empty()
             ? baseline_
@@ -88,8 +74,6 @@
   std::string baseline_;
 };
 
-#endif  // SUPPORTS_PIXEL_TESTS
-
 // Special handler for browsers and browser tab strips that enables SelectTab().
 class InteractionTestUtilSimulatorBrowser
     : public ui::test::InteractionTestUtil::Simulator {
@@ -256,7 +240,6 @@
     return ui::test::ActionResult::kNotAttempted;
   }
 
-#if SUPPORTS_PIXEL_TESTS
   // pixel_browser_tests and pixel_interactive_ui_tests specify this command
   // line, which is checked by TestBrowserUi before attempting any screen
   // capture; otherwise screenshotting is a silent no-op.
@@ -269,10 +252,9 @@
   }
 
   PixelTestUi pixel_test_ui(view, screenshot_name, baseline);
-  return pixel_test_ui.VerifyUi() ? ui::test::ActionResult::kSucceeded
-                                  : ui::test::ActionResult::kFailed;
-#else  // !SUPPORTS_PIXEL_TESTS
-  LOG(WARNING) << "Current platform does not support pixel tests.";
-  return ui::test::ActionResult::kKnownIncompatible;
-#endif
+  ui::test::ActionResult result = pixel_test_ui.VerifyUiWithResult();
+  if (result == ui::test::ActionResult::kKnownIncompatible) {
+    LOG(WARNING) << "Current platform does not support pixel tests.";
+  }
+  return result;
 }
diff --git a/chrome/updater/updater.cc b/chrome/updater/updater.cc
index f942115..ee4eef83 100644
--- a/chrome/updater/updater.cc
+++ b/chrome/updater/updater.cc
@@ -224,7 +224,7 @@
 }
 
 constexpr const char* BuildFlavor() {
-#if defined(NBEDUG)
+#if defined(NDEBUG)
   return "opt";
 #else
   return "debug";
diff --git a/chromecast/browser/webui/cast_webui.cc b/chromecast/browser/webui/cast_webui.cc
index f6c627ac..299f9f5 100644
--- a/chromecast/browser/webui/cast_webui.cc
+++ b/chromecast/browser/webui/cast_webui.cc
@@ -69,7 +69,7 @@
 }
 
 void CastWebUI::CallJavascriptFunction(const std::string& function,
-                                       std::vector<base::Value> args) {
+                                       base::Value::List args) {
   message_handler_->CallJavascriptFunction(
       function, std::vector<const base::ValueView>(args.begin(), args.end()));
 }
diff --git a/chromecast/browser/webui/cast_webui.h b/chromecast/browser/webui/cast_webui.h
index 127c60a..7285f1c 100644
--- a/chromecast/browser/webui/cast_webui.h
+++ b/chromecast/browser/webui/cast_webui.h
@@ -52,7 +52,7 @@
       const std::string& message,
       mojo::PendingRemote<mojom::MessageCallback> callback) override;
   void CallJavascriptFunction(const std::string& function,
-                              std::vector<base::Value> args) override;
+                              base::Value::List args) override;
 
   // Pointer to the generic message handler owned by the Web UI. The message
   // handler is guaranteed to outlive CastWebUI since |this| is the first member
diff --git a/chromecast/browser/webui/mojom/webui.mojom b/chromecast/browser/webui/mojom/webui.mojom
index 4cbaa3c5..9d379e6 100644
--- a/chromecast/browser/webui/mojom/webui.mojom
+++ b/chromecast/browser/webui/mojom/webui.mojom
@@ -28,7 +28,7 @@
   RegisterMessageCallback(string message, pending_remote<MessageCallback> cb);
 
   // Execute a Javascript |function| with |args|.
-  CallJavascriptFunction(string function, array<mojo_base.mojom.Value> args);
+  CallJavascriptFunction(string function, mojo_base.mojom.ListValue args);
 };
 
 // Implement this interface to provide resources for a given host. This
@@ -52,4 +52,3 @@
   CreateResources(string host,
                   pending_receiver<Resources> resources);
 };
-
diff --git a/chromeos/ash/components/osauth/impl/BUILD.gn b/chromeos/ash/components/osauth/impl/BUILD.gn
index 2a211225..55378fd 100644
--- a/chromeos/ash/components/osauth/impl/BUILD.gn
+++ b/chromeos/ash/components/osauth/impl/BUILD.gn
@@ -19,10 +19,13 @@
     "//chromeos/ash/components/login/auth/public:authpublic",
   ]
   sources = [
+    "auth_hub_common.h",
     "auth_hub_impl.cc",
     "auth_hub_impl.h",
     "auth_hub_mode_lifecycle.cc",
     "auth_hub_mode_lifecycle.h",
+    "auth_hub_vector_lifecycle.cc",
+    "auth_hub_vector_lifecycle.h",
     "auth_parts_impl.cc",
     "auth_parts_impl.h",
     "auth_session_storage_impl.cc",
@@ -47,6 +50,7 @@
   sources = [
     "auth_hub_impl_test.cc",
     "auth_hub_mode_lifecycle_unittest.cc",
+    "auth_hub_vector_lifecycle_unittest.cc",
     "auth_session_storage_impl_unittest.cc",
   ]
 }
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_common.h b/chromeos/ash/components/osauth/impl/auth_hub_common.h
new file mode 100644
index 0000000..5650f8de
--- /dev/null
+++ b/chromeos/ash/components/osauth/impl/auth_hub_common.h
@@ -0,0 +1,27 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_ASH_COMPONENTS_OSAUTH_IMPL_AUTH_HUB_COMMON_H_
+#define CHROMEOS_ASH_COMPONENTS_OSAUTH_IMPL_AUTH_HUB_COMMON_H_
+
+#include "base/containers/flat_map.h"
+#include "base/memory/raw_ptr.h"
+#include "chromeos/ash/components/osauth/public/auth_factor_engine.h"
+#include "chromeos/ash/components/osauth/public/common_types.h"
+
+namespace ash {
+
+using AuthEnginesMap =
+    base::flat_map<AshAuthFactor, base::raw_ptr<AuthFactorEngine>>;
+
+struct AuthAttemptVector {
+  AccountId account;
+  AuthPurpose purpose;
+
+  bool operator==(const AuthAttemptVector&) const = default;
+};
+
+}  // namespace ash
+
+#endif  // CHROMEOS_ASH_COMPONENTS_OSAUTH_IMPL_AUTH_HUB_COMMON_H_
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_impl.cc b/chromeos/ash/components/osauth/impl/auth_hub_impl.cc
index 2e9dd31..c4267e5f 100644
--- a/chromeos/ash/components/osauth/impl/auth_hub_impl.cc
+++ b/chromeos/ash/components/osauth/impl/auth_hub_impl.cc
@@ -5,8 +5,13 @@
 #include "chromeos/ash/components/osauth/impl/auth_hub_impl.h"
 
 #include "base/functional/callback.h"
+#include "base/logging.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_common.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h"
 #include "chromeos/ash/components/osauth/public/auth_factor_engine_factory.h"
 #include "chromeos/ash/components/osauth/public/auth_parts.h"
+#include "chromeos/ash/components/osauth/public/string_utils.h"
 
 namespace ash {
 
@@ -17,19 +22,16 @@
 AuthHubImpl::~AuthHubImpl() = default;
 
 void AuthHubImpl::InitializeForMode(AuthHubMode target) {
+  if (vector_lifecycle_ && !vector_lifecycle_->IsIdle()) {
+    target_mode_ = target;
+    // Eventually, after the current attempt gets canceled, `OnIdle()` will be
+    // triggered, which then switches the mode to `target_mode_`.
+    vector_lifecycle_->CancelAttempt();
+    return;
+  }
   mode_lifecycle_->SwitchToMode(target);
 }
 
-void AuthHubImpl::OnReadyForMode(
-    AuthHubMode mode,
-    AuthHubModeLifecycle::EnginesMap available_engines) {
-  on_initialized_listeners_.Notify();
-}
-
-void AuthHubImpl::OnExitedMode(AuthHubMode mode) {}
-
-void AuthHubImpl::OnModeShutdown() {}
-
 void AuthHubImpl::EnsureInitialized(base::OnceClosure on_initialized) {
   if (mode_lifecycle_->IsReady()) {
     std::move(on_initialized).Run();
@@ -38,4 +40,182 @@
   on_initialized_listeners_.AddUnsafe(std::move(on_initialized));
 }
 
+void AuthHubImpl::StartAuthentication(AccountId account_id,
+                                      AuthPurpose purpose,
+                                      AuthAttemptConsumer* consumer) {
+  if (!PurposeMatchesMode(purpose, mode_lifecycle_->GetCurrentMode())) {
+    LOG(ERROR) << "Attempt for " << purpose
+               << " rejected due to incorrect mode "
+               << mode_lifecycle_->GetCurrentMode();
+    consumer->OnUserAuthAttemptRejected();
+    return;
+  }
+
+  CHECK(vector_lifecycle_);
+  AuthAttemptVector attempt{account_id, purpose};
+
+  if (current_attempt_.has_value()) {
+    // If we have two login attempts, let new attempt take
+    // over the existing one.
+    if (AttemptShouldOverrideAnother(attempt, *current_attempt_)) {
+      LOG(WARNING) << "Overriding ongoing attempt";
+      pending_attempt_ = attempt;
+      pending_consumer_ = consumer;
+      vector_lifecycle_->CancelAttempt();
+      return;
+    }
+    if (AttemptShouldOverrideAnother(*current_attempt_, attempt)) {
+      LOG(WARNING) << "Attempt rejected: another higher-priority attempt";
+      consumer->OnUserAuthAttemptRejected();
+      return;
+    }
+    // Neither attempt is considered "Stronger" one,
+    // so we should preserve ongoing one.
+    LOG(WARNING) << "Attempt rejected: another same-priority attempt";
+    consumer->OnUserAuthAttemptRejected();
+    return;
+  }
+  if (pending_attempt_.has_value()) {
+    // If we have two login attempts, let new attempt take
+    // over the pending one.
+    if (AttemptShouldOverrideAnother(attempt, *pending_attempt_)) {
+      LOG(WARNING) << "Overriding pending attempt";
+      pending_consumer_->OnUserAuthAttemptRejected();
+      // Override pending attempt.
+      pending_attempt_ = attempt;
+      pending_consumer_ = consumer;
+      return;
+    }
+    if (AttemptShouldOverrideAnother(*pending_attempt_, attempt)) {
+      LOG(WARNING)
+          << "Attempt rejected: another higher-priority pending attempt";
+      consumer->OnUserAuthAttemptRejected();
+      return;
+    }
+    // Neither attempt is considered "Stronger" one,
+    // so we should preserve pending one.
+    LOG(WARNING) << "Attempt rejected: pending same-priority attempt";
+    consumer->OnUserAuthAttemptRejected();
+    return;
+  }
+
+  CHECK(!attempt_consumer_);
+  attempt_consumer_ = consumer;
+  current_attempt_ = attempt;
+  vector_lifecycle_->StartAttempt(attempt);
+}
+
+bool AuthHubImpl::PurposeMatchesMode(AuthPurpose purpose, AuthHubMode mode) {
+  switch (mode) {
+    case kLoginScreen:
+      return purpose == AuthPurpose::kLogin;
+    case kInSession:
+      return purpose != AuthPurpose::kLogin;
+    case kNone:
+      NOTREACHED_NORETURN();
+  }
+}
+
+bool AuthHubImpl::AttemptShouldOverrideAnother(
+    const AuthAttemptVector& first,
+    const AuthAttemptVector& second) {
+  if (first.purpose == AuthPurpose::kLogin &&
+      second.purpose == AuthPurpose::kLogin) {
+    // New login attempt always overrides previous.
+    return true;
+  }
+  // All login cases should be covered by check above + `PurposeMatchesMode`.
+  CHECK_NE(first.purpose, AuthPurpose::kLogin);
+  CHECK_NE(second.purpose, AuthPurpose::kLogin);
+  if (first.purpose == AuthPurpose::kScreenUnlock) {
+    // Lock screen always overrides any other attempt.
+    return true;
+  }
+  if (second.purpose == AuthPurpose::kScreenUnlock) {
+    // Nothing in-session can override lock screen.
+    return false;
+  }
+  // Currently various in-session attempts should not override ongoing attempt.
+  return false;
+}
+
+// AuthHubModeLifecycle::Owner:
+
+void AuthHubImpl::OnReadyForMode(AuthHubMode mode,
+                                 AuthEnginesMap available_engines) {
+  CHECK(engines_.empty());
+  CHECK(!vector_lifecycle_);
+
+  engines_ = std::move(available_engines);
+  vector_lifecycle_ =
+      std::make_unique<AuthHubVectorLifecycle>(this, mode, engines_);
+
+  on_initialized_listeners_.Notify();
+}
+
+void AuthHubImpl::OnExitedMode(AuthHubMode mode) {}
+
+void AuthHubImpl::OnModeShutdown() {}
+
+// AuthHubVectorLifecycle::Owner:
+
+AuthFactorEngine::FactorEngineObserver* AuthHubImpl::AsEngineObserver() {
+  return this;
+}
+
+void AuthHubImpl::OnAttemptStarted(const AuthAttemptVector& attempt,
+                                   AuthFactorsSet available_factors,
+                                   AuthFactorsSet failed_factors) {
+  base::raw_ptr<AuthFactorStatusConsumer> status_consumer;
+  attempt_consumer_->OnUserAuthAttemptConfirmed(nullptr, status_consumer);
+}
+
+void AuthHubImpl::OnAttemptFinished(const AuthAttemptVector& attempt) {
+  CHECK(attempt == *current_attempt_);
+  attempt_consumer_ = nullptr;
+  current_attempt_ = absl::nullopt;
+}
+
+void AuthHubImpl::OnIdle() {
+  if (target_mode_.has_value()) {
+    if (pending_attempt_.has_value()) {
+      // Cancel pending attempt.
+      pending_consumer_->OnUserAuthAttemptRejected();
+      target_mode_ = absl::nullopt;
+      pending_consumer_ = nullptr;
+    }
+    vector_lifecycle_.release();
+    AuthHubMode mode = *target_mode_;
+    target_mode_ = absl::nullopt;
+    InitializeForMode(mode);
+    return;
+  }
+
+  if (pending_attempt_.has_value()) {
+    AuthAttemptVector attempt = *pending_attempt_;
+    AuthAttemptConsumer* consumer = pending_consumer_.get();
+
+    pending_consumer_ = nullptr;
+    pending_attempt_ = absl::nullopt;
+
+    StartAuthentication(attempt.account, attempt.purpose, consumer);
+    return;
+  }
+}
+
+// AuthFactorEngine::FactorEngineObserver:
+void AuthHubImpl::OnFactorPresenceChecked(AshAuthFactor factor,
+                                          bool factor_present) {
+  // Ignored, checked by AuthHubVectorLifecycle, results are
+  // passed to OnAttemptStarted.
+}
+
+void AuthHubImpl::OnFactorAttempt(AshAuthFactor factor) {}
+void AuthHubImpl::OnFactorAttemptResult(AshAuthFactor factor, bool success) {}
+void AuthHubImpl::OnPolicyChanged(AshAuthFactor factor) {}
+void AuthHubImpl::OnLockoutChanged(AshAuthFactor factor) {}
+void AuthHubImpl::OnOrientationRestrictionsChanged(AshAuthFactor factor) {}
+void AuthHubImpl::OnCriticalError(AshAuthFactor factor) {}
+void AuthHubImpl::OnFactorCustomSignal(AshAuthFactor factor) {}
+
 }  // namespace ash
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_impl.h b/chromeos/ash/components/osauth/impl/auth_hub_impl.h
index c336fe4..903341f 100644
--- a/chromeos/ash/components/osauth/impl/auth_hub_impl.h
+++ b/chromeos/ash/components/osauth/impl/auth_hub_impl.h
@@ -11,7 +11,10 @@
 #include "base/component_export.h"
 #include "base/containers/flat_map.h"
 #include "base/memory/weak_ptr.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_common.h"
 #include "chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h"
+#include "chromeos/ash/components/osauth/public/auth_attempt_consumer.h"
 #include "chromeos/ash/components/osauth/public/auth_factor_engine.h"
 #include "chromeos/ash/components/osauth/public/auth_hub.h"
 #include "chromeos/ash/components/osauth/public/common_types.h"
@@ -20,7 +23,9 @@
 
 class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) AuthHubImpl
     : public AuthHub,
-      public AuthHubModeLifecycle::Owner {
+      public AuthHubModeLifecycle::Owner,
+      public AuthHubVectorLifecycle::Owner,
+      public AuthFactorEngine::FactorEngineObserver {
  public:
   explicit AuthHubImpl();
   ~AuthHubImpl() override;
@@ -31,15 +36,58 @@
   void InitializeForMode(AuthHubMode target) override;
   void EnsureInitialized(base::OnceClosure on_initialized) override;
 
-  // ----- AuthHubModeLifecycle implementation:
-  void OnReadyForMode(
-      AuthHubMode mode,
-      AuthHubModeLifecycle::EnginesMap available_engines) override;
+  void StartAuthentication(AccountId accountId,
+                           AuthPurpose purpose,
+                           AuthAttemptConsumer* consumer) override;
+
+  // AuthHubModeLifecycle::Owner:
+  void OnReadyForMode(AuthHubMode mode,
+                      AuthEnginesMap available_engines) override;
   void OnExitedMode(AuthHubMode mode) override;
   void OnModeShutdown() override;
 
+  // AuthHubVectorLifecycle::Owner:
+  AuthFactorEngine::FactorEngineObserver* AsEngineObserver() override;
+  void OnAttemptStarted(const AuthAttemptVector& attempt,
+                        AuthFactorsSet available_factors,
+                        AuthFactorsSet failed_factors) override;
+  void OnAttemptFinished(const AuthAttemptVector& attempt) override;
+  void OnIdle() override;
+
+  // AuthFactorEngine::FactorEngineObserver:
+  void OnFactorPresenceChecked(AshAuthFactor factor,
+                               bool factor_present) override;
+  void OnFactorAttempt(AshAuthFactor factor) override;
+  void OnFactorAttemptResult(AshAuthFactor factor, bool success) override;
+  void OnPolicyChanged(AshAuthFactor factor) override;
+  void OnLockoutChanged(AshAuthFactor factor) override;
+  void OnOrientationRestrictionsChanged(AshAuthFactor factor) override;
+  void OnCriticalError(AshAuthFactor factor) override;
+  void OnFactorCustomSignal(AshAuthFactor factor) override;
+
  private:
+  bool PurposeMatchesMode(AuthPurpose purpose, AuthHubMode mode);
+  // Checks if `first` attempt have higher priority and should
+  // override `second`.
+  bool AttemptShouldOverrideAnother(const AuthAttemptVector& first,
+                                    const AuthAttemptVector& second);
+
+  AuthEnginesMap engines_;
+
+  absl::optional<AuthAttemptVector> current_attempt_;
+  base::raw_ptr<AuthAttemptConsumer> attempt_consumer_ = nullptr;
+
+  absl::optional<AuthAttemptVector> pending_attempt_;
+  base::raw_ptr<AuthAttemptConsumer> pending_consumer_ = nullptr;
+
+  // Target mode for initialization, used to store last request when
+  // some extra actions are required before mode can be switched.
+  // If another mode change is requested during such actions, it
+  // is safe to just replace target_mode_.
+  absl::optional<AuthHubMode> target_mode_;
+
   base::OnceCallbackList<void()> on_initialized_listeners_;
+  std::unique_ptr<AuthHubVectorLifecycle> vector_lifecycle_;
   std::unique_ptr<AuthHubModeLifecycle> mode_lifecycle_;
   base::WeakPtrFactory<AuthHubImpl> weak_factory_{this};
 };
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_impl_test.cc b/chromeos/ash/components/osauth/impl/auth_hub_impl_test.cc
index fd23f6b..9fe6f57 100644
--- a/chromeos/ash/components/osauth/impl/auth_hub_impl_test.cc
+++ b/chromeos/ash/components/osauth/impl/auth_hub_impl_test.cc
@@ -15,24 +15,30 @@
 #include "chromeos/ash/components/osauth/impl/auth_hub_impl.h"
 #include "chromeos/ash/components/osauth/impl/auth_parts_impl.h"
 #include "chromeos/ash/components/osauth/public/auth_hub.h"
+#include "chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.h"
 #include "chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h"
 #include "chromeos/ash/components/osauth/test_support/mock_auth_factor_engine_factory.h"
+#include "chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace ash {
 
-constexpr AshAuthFactor kOneFactor = AshAuthFactor::kGaiaPassword;
+constexpr AshAuthFactor kFactor = AshAuthFactor::kGaiaPassword;
 
 using base::test::RunOnceCallback;
 using testing::_;
+using testing::AnyNumber;
 using testing::ByMove;
+using testing::Eq;
+using testing::Invoke;
 using testing::Return;
+using testing::SaveArg;
 using testing::StrictMock;
 
-class AuthHubTestMode : public ::testing::Test {
+class AuthHubTestBase : public ::testing::Test {
  protected:
-  AuthHubTestMode() {
+  AuthHubTestBase() {
     parts_ = AuthPartsImpl::CreateTestInstance();
     parts_->SetAuthHub(std::make_unique<AuthHubImpl>());
 
@@ -41,22 +47,41 @@
 
     engine_ = engine.get();
 
-    EXPECT_CALL(*factory, GetFactor()).WillRepeatedly(Return(kOneFactor));
-    EXPECT_CALL(*engine, GetFactor()).WillRepeatedly(Return(kOneFactor));
+    EXPECT_CALL(*factory, GetFactor()).WillRepeatedly(Return(kFactor));
+    EXPECT_CALL(*engine, GetFactor()).WillRepeatedly(Return(kFactor));
+    EXPECT_CALL(*engine, InitializeCommon(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(RunOnceCallback<0>(kFactor));
+    EXPECT_CALL(*engine, ShutdownCommon(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(RunOnceCallback<0>(kFactor));
+
     EXPECT_CALL(*factory, CreateEngine(_))
         .WillOnce(Return(ByMove(std::move(engine))));
-
     parts_->RegisterEngineFactory(std::move(factory));
   }
 
+  void ExpectEngineStart(AuthAttemptVector vector) {
+    EXPECT_CALL(*engine_,
+                StartAuthFlow(Eq(vector.account), Eq(vector.purpose), _))
+        .WillOnce(SaveArg<2>(&engine_observer_));
+    EXPECT_CALL(*engine_, UpdateObserver(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(SaveArg<0>(&engine_observer_));
+  }
+
   base::test::TaskEnvironment task_environment_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
 
   std::unique_ptr<AuthPartsImpl> parts_;
 
   base::raw_ptr<MockAuthFactorEngine> engine_;
+  base::raw_ptr<AuthFactorEngine::FactorEngineObserver> engine_observer_ =
+      nullptr;
 };
 
+using AuthHubTestMode = AuthHubTestBase;
+
 TEST_F(AuthHubTestMode, CheckEnsureInitialized) {
   base::test::TestFuture<void> init_future;
 
@@ -70,9 +95,62 @@
 
   EXPECT_FALSE(init_future.IsReady());
 
-  std::move(init_callback).Run(kOneFactor);
+  std::move(init_callback).Run(kFactor);
 
   EXPECT_TRUE(init_future.IsReady());
 }
 
+class AuthHubTestVector : public AuthHubTestBase {
+ protected:
+  AuthHubTestVector() {
+    account_ = AccountId::FromUserEmail("user1@example.com");
+    attempt_ = AuthAttemptVector{account_, AuthPurpose::kLogin};
+  }
+
+  void ExpectAttemptConfirmation() {
+    EXPECT_CALL(attempt_consumer_, OnUserAuthAttemptConfirmed(_, _))
+        .WillOnce(Invoke([&](AuthHubConnector* connector,
+                             raw_ptr<AuthFactorStatusConsumer>& out_consumer) {
+          connector_ = connector;
+          out_consumer = &status_consumer_;
+        }));
+  }
+
+  AccountId account_;
+  AuthAttemptVector attempt_;
+  base::raw_ptr<AuthHubConnector> connector_ = nullptr;
+  StrictMock<MockAuthAttemptConsumer> attempt_consumer_;
+  StrictMock<MockAuthFactorStatusConsumer> status_consumer_;
+};
+
+TEST_F(AuthHubTestVector, InvalidPurposeOnLoginScreen) {
+  AuthHub::Get()->InitializeForMode(AuthHubMode::kLoginScreen);
+
+  EXPECT_CALL(attempt_consumer_, OnUserAuthAttemptRejected());
+  AuthHub::Get()->StartAuthentication(account_, AuthPurpose::kWebAuthN,
+                                      &attempt_consumer_);
+}
+TEST_F(AuthHubTestVector, InvalidPurposeInSession) {
+  AuthHub::Get()->InitializeForMode(AuthHubMode::kInSession);
+
+  EXPECT_CALL(attempt_consumer_, OnUserAuthAttemptRejected());
+  AuthHub::Get()->StartAuthentication(account_, AuthPurpose::kLogin,
+                                      &attempt_consumer_);
+}
+
+TEST_F(AuthHubTestVector, SingleFactorSuccess) {
+  AuthHub::Get()->InitializeForMode(AuthHubMode::kLoginScreen);
+
+  ExpectEngineStart(attempt_);
+  ExpectAttemptConfirmation();
+
+  AuthHub::Get()->StartAuthentication(attempt_.account, attempt_.purpose,
+                                      &attempt_consumer_);
+
+  ASSERT_NE(engine_observer_, nullptr);
+  engine_observer_->OnFactorPresenceChecked(kFactor, true);
+}
+
+// TODO (b/271248265): add tests for preemption during initialization.
+
 }  // namespace ash
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.cc b/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.cc
index 29420025..c5b0fac 100644
--- a/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.cc
+++ b/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.cc
@@ -11,6 +11,7 @@
 #include "chromeos/ash/components/osauth/public/auth_factor_engine.h"
 #include "chromeos/ash/components/osauth/public/auth_factor_engine_factory.h"
 #include "chromeos/ash/components/osauth/public/auth_parts.h"
+#include "chromeos/ash/components/osauth/public/string_utils.h"
 
 namespace ash {
 namespace {
@@ -29,6 +30,20 @@
   kStopped
 };
 
+std::ostream& operator<<(std::ostream& out, EngineStatus status) {
+  switch (status) {
+#define PRINT(s)           \
+  case EngineStatus::k##s: \
+    return out << #s;
+    PRINT(Starting)
+    PRINT(Started)
+    PRINT(Failed)
+    PRINT(ShuttingDown)
+    PRINT(Stopped)
+#undef PRINT
+  }
+}
+
 }  // namespace
 
 struct AuthHubModeLifecycle::EngineState {
@@ -41,6 +56,8 @@
 
 AuthHubModeLifecycle::~AuthHubModeLifecycle() = default;
 
+AuthHubModeLifecycle::Owner::~Owner() = default;
+
 void AuthHubModeLifecycle::SwitchToMode(AuthHubMode target) {
   CHECK_NE(target, AuthHubMode::kNone);
   SwitchToModeImpl(target);
@@ -123,7 +140,7 @@
   for (auto& engine_state : engines_) {
     if (engine_state.second.status == EngineStatus::kStarting) {
       engine_state.second.status = EngineStatus::kFailed;
-      LOG(ERROR) << "Factor " << static_cast<int>(engine_state.first)
+      LOG(ERROR) << "Factor " << engine_state.first
                  << " did not initialize in time";
       engine_state.second.engine->InitializationTimedOut();
     }
@@ -143,9 +160,8 @@
         break;
       case EngineStatus::kShuttingDown:
       case EngineStatus::kStopped:
-        LOG(FATAL) << "Engine " << static_cast<int>(engine_state.first)
-                   << " is in invalid state "
-                   << static_cast<int>(engine_state.second.status);
+        LOG(FATAL) << "Engine " << engine_state.first << " is in invalid state "
+                   << engine_state.second.status;
     }
   }
   if (all_initialized) {
@@ -203,7 +219,7 @@
   for (auto& engine_state : engines_) {
     if (engine_state.second.status == EngineStatus::kShuttingDown) {
       engine_state.second.status = EngineStatus::kFailed;
-      LOG(ERROR) << "Factor " << static_cast<int>(engine_state.first)
+      LOG(ERROR) << "Factor " << engine_state.first
                  << " did not shut down in time";
       engine_state.second.engine->ShutdownTimedOut();
     }
@@ -225,9 +241,8 @@
         break;
       case EngineStatus::kStarting:
       case EngineStatus::kStarted:
-        LOG(FATAL) << "Engine " << static_cast<int>(engine_state.first)
-                   << " is in invalid state "
-                   << static_cast<int>(engine_state.second.status);
+        LOG(FATAL) << "Engine " << engine_state.first << " is in invalid state "
+                   << engine_state.second.status;
     }
   }
 
@@ -252,9 +267,16 @@
   return stage_ == Stage::kStarted;
 }
 
-AuthHubModeLifecycle::EnginesMap AuthHubModeLifecycle::GetAvailableEngines() {
+AuthHubMode AuthHubModeLifecycle::GetCurrentMode() const {
+  if (stage_ != Stage::kStarted) {
+    return AuthHubMode::kNone;
+  }
+  return mode_;
+}
+
+AuthEnginesMap AuthHubModeLifecycle::GetAvailableEngines() {
   CHECK_EQ(stage_, Stage::kStarted);
-  AuthHubModeLifecycle::EnginesMap result;
+  AuthEnginesMap result;
   for (const auto& engine_state : engines_) {
     if (engine_state.second.status == EngineStatus::kStarted) {
       result[engine_state.first] = engine_state.second.engine.get();
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h b/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h
index 3553277..cb27a52 100644
--- a/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h
+++ b/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h
@@ -9,6 +9,7 @@
 #include "base/containers/flat_map.h"
 #include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_common.h"
 #include "chromeos/ash/components/osauth/public/auth_factor_engine.h"
 #include "chromeos/ash/components/osauth/public/common_types.h"
 
@@ -32,26 +33,28 @@
 //    complete;
 //  * Destroying all engine instances;
 //  * Switching to another mode if necessary.
+// `AuthHubModeLifecycle` correctly handles attempt mode
+// initialization/shutdown, even if request to switch mode/shut down  was
+// requested in the middle of ongoing init/shutdown sequence.
+
 class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) AuthHubModeLifecycle {
  public:
-  using EnginesMap =
-      base::flat_map<AshAuthFactor, base::raw_ptr<AuthFactorEngine>>;
-
   // Interface to interact with owning AuthHub:
-  class Owner {
+  class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) Owner {
    public:
+    virtual ~Owner();
     virtual void OnReadyForMode(AuthHubMode mode,
-                                EnginesMap available_engines) = 0;
+                                AuthEnginesMap available_engines) = 0;
     virtual void OnExitedMode(AuthHubMode mode) = 0;
     virtual void OnModeShutdown() = 0;
-    virtual ~Owner() = default;
   };
 
   explicit AuthHubModeLifecycle(Owner* owner);
   ~AuthHubModeLifecycle();
 
   bool IsReady();
-  EnginesMap GetAvailableEngines();
+  AuthEnginesMap GetAvailableEngines();
+  AuthHubMode GetCurrentMode() const;
 
   void SwitchToMode(AuthHubMode mode);
   void Shutdown();
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle_unittest.cc b/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle_unittest.cc
index b9cabc63..87d85253 100644
--- a/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle_unittest.cc
+++ b/chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/test/gmock_move_support.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_future.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_common.h"
 #include "chromeos/ash/components/osauth/impl/auth_hub_impl.h"
 #include "chromeos/ash/components/osauth/impl/auth_hub_mode_lifecycle.h"
 #include "chromeos/ash/components/osauth/impl/auth_parts_impl.h"
@@ -41,10 +42,7 @@
   MockModeLifecycleOwner() = default;
   ~MockModeLifecycleOwner() override = default;
 
-  MOCK_METHOD(void,
-              OnReadyForMode,
-              (AuthHubMode, AuthHubModeLifecycle::EnginesMap),
-              (override));
+  MOCK_METHOD(void, OnReadyForMode, (AuthHubMode, AuthEnginesMap), (override));
   MOCK_METHOD(void, OnExitedMode, (AuthHubMode), (override));
   MOCK_METHOD(void, OnModeShutdown, (), (override));
 };
@@ -131,7 +129,7 @@
   EXPECT_FALSE(lifecycle_.IsReady());
   Mock::VerifyAndClearExpectations(&owner_);
 
-  AuthHubModeLifecycle::EnginesMap engines;
+  AuthEnginesMap engines;
   EXPECT_CALL(owner_, OnReadyForMode(Eq(AuthHubMode::kLoginScreen), _))
       .WillOnce(MoveArg<1>(&engines));
 
@@ -233,7 +231,7 @@
 
   // Should finish shutdown and proceed to initialization for second
   // requested mode.
-  AuthHubModeLifecycle::EnginesMap engines;
+  AuthEnginesMap engines;
   EXPECT_CALL(owner_, OnReadyForMode(Eq(AuthHubMode::kInSession), _))
       .WillOnce(MoveArg<1>(&engines));
 
@@ -264,7 +262,7 @@
 
   EXPECT_CALL(*engines_[kOneFactor], InitializationTimedOut());
 
-  AuthHubModeLifecycle::EnginesMap engines;
+  AuthEnginesMap engines;
   EXPECT_CALL(owner_, OnReadyForMode(Eq(AuthHubMode::kLoginScreen), _))
       .WillOnce(MoveArg<1>(&engines));
 
@@ -295,7 +293,7 @@
   ExpectLoginFactor(kOneFactor);
   ExpectLoginFactor(kAnotherFactor);
 
-  AuthHubModeLifecycle::EnginesMap engines;
+  AuthEnginesMap engines;
   EXPECT_CALL(owner_, OnReadyForMode(Eq(AuthHubMode::kLoginScreen), _))
       .WillOnce(MoveArg<1>(&engines));
 
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.cc b/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.cc
new file mode 100644
index 0000000..4b0a38e
--- /dev/null
+++ b/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.cc
@@ -0,0 +1,298 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h"
+
+#include "base/debug/dump_without_crashing.h"
+#include "base/functional/callback.h"
+#include "base/logging.h"
+#include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
+#include "base/time/time.h"
+#include "chromeos/ash/components/osauth/public/auth_factor_engine.h"
+#include "chromeos/ash/components/osauth/public/auth_factor_engine_factory.h"
+#include "chromeos/ash/components/osauth/public/auth_parts.h"
+#include "chromeos/ash/components/osauth/public/string_utils.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace ash {
+
+namespace {
+
+// TODO (b/271248265): Review timeout values.
+#if !defined(NDEBUG)
+constexpr base::TimeDelta kWatchdogTimeout = base::Seconds(5);
+#else
+constexpr base::TimeDelta kWatchdogTimeout = base::Seconds(10);
+#endif
+
+enum class EngineAttemptStatus {
+  kIdle,
+  kStarting,
+  kNoFactor,
+  kStarted,
+  kFailed,
+  kCriticalError,
+  kFinishing,
+};
+
+}  // namespace
+
+struct AuthHubVectorLifecycle::FactorAttemptState {
+  base::raw_ptr<AuthFactorEngine> engine;
+  EngineAttemptStatus status;
+};
+
+AuthHubVectorLifecycle::AuthHubVectorLifecycle(Owner* owner,
+                                               AuthHubMode mode,
+                                               const AuthEnginesMap& engines)
+    : available_engines_(engines), owner_(owner) {
+  CHECK(!engines.empty());
+}
+
+AuthHubVectorLifecycle::~AuthHubVectorLifecycle() = default;
+
+AuthHubVectorLifecycle::Owner::~Owner() = default;
+
+void AuthHubVectorLifecycle::StartAttempt(const AuthAttemptVector& attempt) {
+  target_attempt_ = attempt;
+  switch (stage_) {
+    case Stage::kIdle:
+      StartForTargetAttempt();
+      break;
+    case Stage::kStarted:
+      FinishAttempt();
+      break;
+    case Stage::kStartingAttempt:
+      // Set up new target mode, but do not modify initializing_for_,
+      // `ProceedIfAllFactorsStarted` would trigger re-initialization.
+      break;
+    case Stage::kFinishingAttempt:
+      // Just update the target mode, `ProceedIfAllFactorsFinished` would
+      // trigger new attempt.
+      break;
+  }
+}
+
+void AuthHubVectorLifecycle::CancelAttempt() {
+  switch (stage_) {
+    case Stage::kIdle:
+      LOG(WARNING) << "Request to cancel attempt without actual attempt";
+      break;
+    case Stage::kStarted:
+      target_attempt_ = absl::nullopt;
+      FinishAttempt();
+      break;
+    case Stage::kStartingAttempt:
+    case Stage::kFinishingAttempt:
+      target_attempt_ = absl::nullopt;
+      break;
+  }
+}
+
+bool AuthHubVectorLifecycle::IsIdle() const {
+  return stage_ == Stage::kIdle;
+}
+
+void AuthHubVectorLifecycle::StartForTargetAttempt() {
+  CHECK_EQ(stage_, Stage::kIdle);
+  CHECK(target_attempt_.has_value());
+
+  stage_ = Stage::kStartingAttempt;
+  initializing_for_ = target_attempt_;
+
+  CHECK(engines_.empty());
+  for (const auto& engine : available_engines_) {
+    engines_[engine.first] =
+        FactorAttemptState{engine.second, EngineAttemptStatus::kStarting};
+  }
+
+  watchdog_.Stop();
+  watchdog_.Start(
+      FROM_HERE, kWatchdogTimeout,
+      base::BindOnce(&AuthHubVectorLifecycle::OnAttemptStartWatchdog,
+                     weak_factory_.GetWeakPtr()));
+  for (auto& state : engines_) {
+    state.second.engine->StartAuthFlow(target_attempt_->account,
+                                       target_attempt_->purpose, this);
+  }
+}
+
+void AuthHubVectorLifecycle::OnAttemptStartWatchdog() {
+  LOG(ERROR) << "Attempt start watchdog triggered";
+  CHECK_EQ(stage_, Stage::kStartingAttempt);
+
+  for (auto& state : engines_) {
+    if (state.second.status == EngineAttemptStatus::kStarting) {
+      state.second.status = EngineAttemptStatus::kFailed;
+      LOG(ERROR) << "Factor " << state.first << " did not start in time";
+      state.second.engine->StartFlowTimedOut();
+    }
+  }
+  ProceedIfAllFactorsStarted();
+}
+
+void AuthHubVectorLifecycle::ProceedIfAllFactorsStarted() {
+  CHECK_EQ(stage_, Stage::kStartingAttempt);
+  for (const auto& state : engines_) {
+    if (state.second.status == EngineAttemptStatus::kStarting) {
+      return;
+    }
+  }
+  watchdog_.Stop();
+  stage_ = Stage::kStarted;
+  if (initializing_for_ != target_attempt_) {
+    // Not notifying owner, just restart for new target.
+    initializing_for_ = absl::nullopt;
+    FinishAttempt();
+    return;
+  }
+  CHECK(target_attempt_.has_value());
+
+  current_attempt_ = target_attempt_;
+
+  AuthFactorsSet present;
+  AuthFactorsSet failed;
+
+  for (const auto& state : engines_) {
+    switch (state.second.status) {
+      case EngineAttemptStatus::kStarted:
+        present.Put(state.first);
+        state.second.engine->UpdateObserver(owner_->AsEngineObserver());
+        break;
+      case EngineAttemptStatus::kNoFactor:
+        // Just ignore them
+        break;
+      case EngineAttemptStatus::kCriticalError:
+      case EngineAttemptStatus::kFailed:
+        failed.Put(state.first);
+        break;
+      case EngineAttemptStatus::kStarting:
+      case EngineAttemptStatus::kIdle:
+      case EngineAttemptStatus::kFinishing:
+        NOTREACHED_NORETURN();
+    }
+  }
+  owner_->OnAttemptStarted(*current_attempt_, present, failed);
+}
+
+void AuthHubVectorLifecycle::FinishAttempt() {
+  CHECK_EQ(stage_, Stage::kStarted);
+  stage_ = Stage::kFinishingAttempt;
+  for (auto& state : engines_) {
+    state.second.status = EngineAttemptStatus::kFinishing;
+  }
+  watchdog_.Stop();
+  watchdog_.Start(
+      FROM_HERE, kWatchdogTimeout,
+      base::BindOnce(&AuthHubVectorLifecycle::OnAttemptFinishWatchdog,
+                     weak_factory_.GetWeakPtr()));
+
+  // TODO(b/277929602): metrics on initialization time.
+  for (auto& state : engines_) {
+    state.second.engine->UpdateObserver(this);
+    state.second.engine->StopAuthFlow(base::BindOnce(
+        &AuthHubVectorLifecycle::OnFactorFinished, weak_factory_.GetWeakPtr()));
+  }
+}
+
+void AuthHubVectorLifecycle::OnFactorFinished(AshAuthFactor factor) {
+  CHECK_EQ(stage_, Stage::kFinishingAttempt);
+  CHECK(engines_.contains(factor));
+  engines_[factor].status = EngineAttemptStatus::kIdle;
+  ProceedIfAllFactorsFinished();
+}
+
+void AuthHubVectorLifecycle::OnAttemptFinishWatchdog() {
+  LOG(ERROR) << "Attempt finish watchdog triggered";
+  CHECK_EQ(stage_, Stage::kFinishingAttempt);
+
+  for (auto& state : engines_) {
+    if (state.second.status == EngineAttemptStatus::kFinishing) {
+      state.second.status = EngineAttemptStatus::kFailed;
+      LOG(ERROR) << "Factor " << state.first << " did not finish in time";
+      state.second.engine->StopFlowTimedOut();
+    }
+  }
+  ProceedIfAllFactorsFinished();
+}
+
+void AuthHubVectorLifecycle::ProceedIfAllFactorsFinished() {
+  CHECK_EQ(stage_, Stage::kFinishingAttempt);
+  for (const auto& state : engines_) {
+    if (state.second.status == EngineAttemptStatus::kFinishing) {
+      return;
+    }
+  }
+  engines_.clear();
+
+  watchdog_.Stop();
+  stage_ = Stage::kIdle;
+
+  if (current_attempt_.has_value()) {
+    // We have notified owner about attempt start, so
+    // we need to notify about finish.
+    owner_->OnAttemptFinished(*current_attempt_);
+  }
+  current_attempt_ = absl::nullopt;
+
+  if (target_attempt_.has_value()) {
+    StartForTargetAttempt();
+  } else {
+    owner_->OnIdle();
+  }
+}
+
+// AuthFactorEngine::FactorEngineObserver:
+void AuthHubVectorLifecycle::OnFactorPresenceChecked(AshAuthFactor factor,
+                                                     bool factor_present) {
+  CHECK_EQ(stage_, Stage::kStartingAttempt);
+  CHECK(engines_.contains(factor));
+
+  engines_[factor].status = factor_present ? EngineAttemptStatus::kStarted
+                                           : EngineAttemptStatus::kNoFactor;
+  ProceedIfAllFactorsStarted();
+}
+
+void AuthHubVectorLifecycle::OnFactorAttempt(AshAuthFactor factor) {
+  // Ignored
+  // Should not happen, as factors start in disabled state.
+  base::debug::DumpWithoutCrashing();
+}
+void AuthHubVectorLifecycle::OnFactorAttemptResult(AshAuthFactor factor,
+                                                   bool success) {
+  // Ignored
+  // Should not happen, as factors start in disabled state.
+  base::debug::DumpWithoutCrashing();
+}
+
+void AuthHubVectorLifecycle::OnPolicyChanged(AshAuthFactor factor) {
+  // Ignored
+}
+void AuthHubVectorLifecycle::OnLockoutChanged(AshAuthFactor factor) {
+  // Ignored
+}
+void AuthHubVectorLifecycle::OnOrientationRestrictionsChanged(
+    AshAuthFactor factor) {
+  // Ignored
+}
+void AuthHubVectorLifecycle::OnFactorCustomSignal(AshAuthFactor factor) {
+  // Ignored
+}
+
+void AuthHubVectorLifecycle::OnCriticalError(AshAuthFactor factor) {
+  CHECK(stage_ == Stage::kStartingAttempt ||
+        stage_ == Stage::kFinishingAttempt);
+
+  CHECK(engines_.contains(factor));
+  engines_[factor].status = EngineAttemptStatus::kCriticalError;
+
+  if (stage_ == Stage::kStartingAttempt) {
+    ProceedIfAllFactorsStarted();
+  } else {
+    ProceedIfAllFactorsFinished();
+  }
+}
+
+}  // namespace ash
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h b/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h
new file mode 100644
index 0000000..c8984408
--- /dev/null
+++ b/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h
@@ -0,0 +1,108 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_ASH_COMPONENTS_OSAUTH_IMPL_AUTH_HUB_VECTOR_LIFECYCLE_H_
+#define CHROMEOS_ASH_COMPONENTS_OSAUTH_IMPL_AUTH_HUB_VECTOR_LIFECYCLE_H_
+
+#include "base/callback_list.h"
+#include "base/containers/flat_map.h"
+#include "base/memory/weak_ptr.h"
+#include "base/timer/timer.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_common.h"
+#include "chromeos/ash/components/osauth/public/auth_factor_engine.h"
+#include "chromeos/ash/components/osauth/public/common_types.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace ash {
+
+// This class manages inner lifecycle of the auth hub.
+// Outer lifecycle includes switching between `AuthAttemptVector`s,
+// basically a combination of `AccountId`+`AuthPurpose`.
+// This class is re-created every time owning `AuthHub` changes mode,
+// and receives initialized engines as parameter.
+// Lifecycle is:
+//  * Call each engine's `StartAuthFlow` with auth vector, and wait for
+//  completion.
+//  * Notify `Owner` about available / failed auth factors.
+//  * Once attempt is finished, call each engine's `StopAuthFlow`, and wait for
+//  completion.
+//  * Notify `Owner` that attempt is finished.
+// `AuthHubVectorLifecycle` correctly handles attempt start/finish, even if
+// request to start/finish was requested in the middle of ongoing start/finish
+// sequence.
+
+class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) AuthHubVectorLifecycle
+    : public AuthFactorEngine::FactorEngineObserver {
+ public:
+  // Interface to interact with owning AuthHub:
+  class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) Owner {
+   public:
+    virtual ~Owner();
+    virtual AuthFactorEngine::FactorEngineObserver* AsEngineObserver() = 0;
+    virtual void OnAttemptStarted(const AuthAttemptVector& attempt,
+                                  AuthFactorsSet available_factors,
+                                  AuthFactorsSet failed_factors) = 0;
+    virtual void OnAttemptFinished(const AuthAttemptVector& attempt) = 0;
+    virtual void OnIdle() = 0;
+  };
+
+  AuthHubVectorLifecycle(Owner* owner,
+                         AuthHubMode mode,
+                         const AuthEnginesMap& engines);
+  ~AuthHubVectorLifecycle() override;
+
+  void StartAttempt(const AuthAttemptVector& vector);
+  void OnFactorInitialized(AshAuthFactor factor);
+  void CancelAttempt();
+  bool IsIdle() const;
+
+  // AuthFactorEngine::FactorEngineObserver:
+  void OnFactorPresenceChecked(AshAuthFactor factor,
+                               bool factor_present) override;
+  void OnFactorAttempt(AshAuthFactor factor) override;
+  void OnFactorAttemptResult(AshAuthFactor factor, bool success) override;
+  void OnPolicyChanged(AshAuthFactor factor) override;
+  void OnLockoutChanged(AshAuthFactor factor) override;
+  void OnOrientationRestrictionsChanged(AshAuthFactor factor) override;
+  void OnCriticalError(AshAuthFactor factor) override;
+  void OnFactorCustomSignal(AshAuthFactor factor) override;
+
+ private:
+  enum class Stage {
+    kIdle,
+    kStartingAttempt,
+    kStarted,
+    kFinishingAttempt,
+  };
+
+  struct FactorAttemptState;
+
+  void StartForTargetAttempt();
+  void OnAttemptStartWatchdog();
+  void ProceedIfAllFactorsStarted();
+
+  void FinishAttempt();
+  void OnFactorFinished(AshAuthFactor factor);
+  void OnAttemptFinishWatchdog();
+  void ProceedIfAllFactorsFinished();
+
+  Stage stage_ = Stage::kIdle;
+
+  absl::optional<AuthAttemptVector> current_attempt_;
+  absl::optional<AuthAttemptVector> target_attempt_;
+  absl::optional<AuthAttemptVector> initializing_for_;
+  absl::optional<AuthAttemptVector> last_started_attempt_;
+
+  AuthEnginesMap available_engines_;
+
+  base::flat_map<AshAuthFactor, FactorAttemptState> engines_;
+
+  base::OneShotTimer watchdog_;
+  base::raw_ptr<Owner> owner_;
+  base::WeakPtrFactory<AuthHubVectorLifecycle> weak_factory_{this};
+};
+
+}  // namespace ash
+
+#endif  // CHROMEOS_ASH_COMPONENTS_OSAUTH_IMPL_AUTH_HUB_VECTOR_LIFECYCLE_H_
diff --git a/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle_unittest.cc b/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle_unittest.cc
new file mode 100644
index 0000000..87a45150
--- /dev/null
+++ b/chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle_unittest.cc
@@ -0,0 +1,374 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/ash/components/osauth/impl/auth_hub_vector_lifecycle.h"
+
+#include <memory>
+
+#include "base/functional/callback_helpers.h"
+#include "base/memory/raw_ptr.h"
+#include "base/test/gmock_callback_support.h"
+#include "base/test/gmock_move_support.h"
+#include "base/test/task_environment.h"
+#include "base/test/test_future.h"
+#include "chromeos/ash/components/osauth/impl/auth_hub_impl.h"
+#include "chromeos/ash/components/osauth/impl/auth_parts_impl.h"
+#include "chromeos/ash/components/osauth/public/auth_hub.h"
+#include "chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.h"
+#include "chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h"
+#include "chromeos/ash/components/osauth/test_support/mock_auth_factor_engine_factory.h"
+#include "chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace ash {
+
+constexpr base::TimeDelta kLongTime = base::Minutes(1);
+constexpr AshAuthFactor kFactor = AshAuthFactor::kGaiaPassword;
+constexpr AshAuthFactor kSpecialFactor = AshAuthFactor::kCryptohomePin;
+
+using base::test::RunOnceCallback;
+using base::test::RunOnceClosure;
+using testing::_;
+using testing::AnyNumber;
+using testing::AtMost;
+using testing::ByMove;
+using testing::DoAll;
+using testing::Eq;
+using testing::Invoke;
+using testing::Mock;
+using testing::Return;
+using testing::SaveArg;
+using testing::StrictMock;
+
+class MockVectorLifecycleOwner : public AuthHubVectorLifecycle::Owner {
+ public:
+  MockVectorLifecycleOwner() = default;
+  ~MockVectorLifecycleOwner() override = default;
+
+  MOCK_METHOD(AuthFactorEngine::FactorEngineObserver*,
+              AsEngineObserver,
+              (),
+              (override));
+  MOCK_METHOD(void,
+              OnAttemptStarted,
+              (const AuthAttemptVector&, AuthFactorsSet, AuthFactorsSet),
+              (override));
+  MOCK_METHOD(void, OnAttemptFinished, (const AuthAttemptVector&), (override));
+  MOCK_METHOD(void, OnIdle, (), (override));
+};
+
+class AuthHubVectorLifecycleTest : public ::testing::Test {
+ protected:
+  AuthHubVectorLifecycleTest() {
+    parts_ = AuthPartsImpl::CreateTestInstance();
+    account_ = AccountId::FromUserEmail("user1@example.com");
+  }
+
+  void SetUp() override {}
+
+  void InitLifecycle() {
+    AuthEnginesMap engines;
+    for (const auto& engine : engines_) {
+      engines[engine.first] = engine.second.get();
+    }
+    lifecycle_ = std::make_unique<AuthHubVectorLifecycle>(
+        &owner_, AuthHubMode::kLoginScreen, engines);
+    EXPECT_CALL(owner_, AsEngineObserver())
+        .Times(AnyNumber())
+        .WillRepeatedly(Return(&owner_engine_observer_));
+  }
+
+  void ExpectOwnerAttemptStartCalled(AuthAttemptVector attempt) {
+    EXPECT_CALL(owner_, OnAttemptStarted(Eq(attempt), _, _))
+        .WillOnce(Invoke([&](const AuthAttemptVector&, AuthFactorsSet usable,
+                             AuthFactorsSet failed) {
+          usable_factors_ = usable;
+          failed_factors_ = failed;
+        }));
+  }
+
+  void TriggerTimeout() { task_environment_.FastForwardBy(kLongTime); }
+
+  void ExpectFactorAvailability(AuthFactorsSet usable, AuthFactorsSet failed) {
+    ASSERT_EQ(usable_factors_, usable);
+    ASSERT_EQ(failed_factors_, failed);
+  }
+
+  void StartAttemptWithAllFactors(AuthAttemptVector attempt) {
+    AuthFactorsSet all_factors;
+    lifecycle_->StartAttempt(attempt);
+    ExpectOwnerAttemptStartCalled(attempt);
+    for (const auto& observer : engine_obvservers_) {
+      all_factors.Put(observer.first);
+      observer.second->OnFactorPresenceChecked(observer.first, true);
+    }
+    ExpectFactorAvailability(all_factors, AuthFactorsSet{});
+    for (const auto& observer : engine_obvservers_) {
+      EXPECT_EQ(observer.second.get(), &owner_engine_observer_);
+    }
+  }
+
+  void ExpectAllFactorsShutdown() {
+    for (const auto& engine : engines_) {
+      EXPECT_CALL(*engine.second, StopAuthFlow(_))
+          .WillOnce(RunOnceCallback<0>(engine.first));
+    }
+  }
+
+  void ExpectAuthOnEngine(AshAuthFactor factor, AuthAttemptVector attempt) {
+    StrictMock<MockAuthFactorEngine>* engine = engines_[factor].get();
+
+    EXPECT_CALL(*engine,
+                StartAuthFlow(Eq(attempt.account), Eq(attempt.purpose), _))
+        .WillOnce(Invoke(
+            [&, factor](AccountId, AuthPurpose,
+                        AuthFactorEngine::FactorEngineObserver* observer) {
+              engine_obvservers_[factor] = observer;
+            }));
+  }
+
+  StrictMock<MockAuthFactorEngine>* SetUpEngine(AshAuthFactor factor) {
+    engines_[factor] = std::make_unique<StrictMock<MockAuthFactorEngine>>();
+    StrictMock<MockAuthFactorEngine>* engine = engines_[factor].get();
+
+    ExpectAuthOnEngine(factor,
+                       AuthAttemptVector{account_, AuthPurpose::kLogin});
+
+    EXPECT_CALL(*engine, UpdateObserver(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(Invoke(
+            [&, factor](AuthFactorEngine::FactorEngineObserver* observer) {
+              engine_obvservers_[factor] = observer;
+            }));
+    return engine;
+  }
+
+  base::test::TaskEnvironment task_environment_{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+
+  AccountId account_;
+  std::unique_ptr<AuthPartsImpl> parts_;
+  StrictMock<MockVectorLifecycleOwner> owner_;
+  StrictMock<MockAuthFactorEngineObserver> owner_engine_observer_;
+
+  base::flat_map<AshAuthFactor,
+                 std::unique_ptr<StrictMock<MockAuthFactorEngine>>>
+      engines_;
+  base::flat_map<AshAuthFactor,
+                 base::raw_ptr<AuthFactorEngine::FactorEngineObserver>>
+      engine_obvservers_;
+  AuthFactorsSet usable_factors_;
+  AuthFactorsSet failed_factors_;
+
+  std::unique_ptr<AuthHubVectorLifecycle> lifecycle_;
+
+  base::raw_ptr<AuthHubConnector> connector_;
+};
+
+// Standard init/shutdown flow.
+TEST_F(AuthHubVectorLifecycleTest, SingleFactorAttemptStartCancel) {
+  auto* engine = SetUpEngine(kFactor);
+  InitLifecycle();
+
+  EXPECT_TRUE(lifecycle_->IsIdle());
+
+  AuthAttemptVector attempt{account_, AuthPurpose::kLogin};
+
+  // Start auth attempt, Lifecycle sets observer to engine.
+  lifecycle_->StartAttempt(attempt);
+
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  ExpectOwnerAttemptStartCalled(attempt);
+
+  // Report that engine is ready.
+  engine_obvservers_[kFactor]->OnFactorPresenceChecked(kFactor, true);
+
+  // Upon initialization Lifecycle should report usable factors, and
+  // update Observer to Owner for them.
+  ExpectFactorAvailability(AuthFactorsSet{kFactor}, AuthFactorsSet{});
+
+  EXPECT_EQ(engine_obvservers_[kFactor].get(), &owner_engine_observer_);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  Mock::VerifyAndClearExpectations(&owner_);
+
+  AuthFactorEngine::ShutdownCallback callback;
+  EXPECT_CALL(*engine, StopAuthFlow(_)).WillOnce(MoveArg<0>(&callback));
+
+  // Upon attempt cancellation, Lifecycle should provide callback.
+  lifecycle_->CancelAttempt();
+
+  ASSERT_FALSE(callback.is_null());
+
+  EXPECT_CALL(owner_, OnAttemptFinished(Eq(attempt)));
+  EXPECT_CALL(owner_, OnIdle());
+
+  // Once engine finishes attempt cleanup, Lifecycle should notify
+  // the Owner.
+  std::move(callback).Run(kFactor);
+
+  EXPECT_TRUE(lifecycle_->IsIdle());
+}
+
+TEST_F(AuthHubVectorLifecycleTest, FactorNotPresent) {
+  SetUpEngine(kFactor);
+  SetUpEngine(kSpecialFactor);
+  InitLifecycle();
+
+  EXPECT_TRUE(lifecycle_->IsIdle());
+
+  AuthAttemptVector attempt{account_, AuthPurpose::kLogin};
+  // Start auth attempt, Lifecycle sets observer to engine.
+  lifecycle_->StartAttempt(attempt);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  ExpectOwnerAttemptStartCalled(attempt);
+
+  engine_obvservers_[kFactor]->OnFactorPresenceChecked(kFactor, true);
+  engine_obvservers_[kSpecialFactor]->OnFactorPresenceChecked(kSpecialFactor,
+                                                              false);
+
+  // Upon initialization Lifecycle should report usable factors, and
+  // update Observer to Owner for them.
+  // Note that as kSpecialFactor is just not configured, it is not reported
+  // neither in `failed_factors` nor in `usable_factors`, it's observer is not
+  // changed.
+
+  ExpectFactorAvailability(AuthFactorsSet{kFactor}, AuthFactorsSet{});
+
+  EXPECT_EQ(engine_obvservers_[kFactor].get(), &owner_engine_observer_);
+  EXPECT_NE(engine_obvservers_[kSpecialFactor].get(), &owner_engine_observer_);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  // Upon cleanup, non-present factor should still be asked
+  // to stop auth flow.
+  ExpectAllFactorsShutdown();
+
+  EXPECT_CALL(owner_, OnAttemptFinished(_));
+  EXPECT_CALL(owner_, OnIdle());
+
+  lifecycle_->CancelAttempt();
+}
+
+TEST_F(AuthHubVectorLifecycleTest, FactorTimedOutDuringInit) {
+  SetUpEngine(kFactor);
+  auto* timeout_engine = SetUpEngine(kSpecialFactor);
+  InitLifecycle();
+
+  EXPECT_TRUE(lifecycle_->IsIdle());
+
+  AuthAttemptVector attempt{account_, AuthPurpose::kLogin};
+  // Start auth attempt, Lifecycle sets observer to engine.
+  lifecycle_->StartAttempt(attempt);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  ExpectOwnerAttemptStartCalled(attempt);
+
+  engine_obvservers_[kFactor]->OnFactorPresenceChecked(kFactor, true);
+  EXPECT_CALL(*timeout_engine, StartFlowTimedOut());
+
+  TriggerTimeout();
+
+  // Upon initialization Lifecycle should report usable and failed factors, and
+  // update Observer to Owner for usable ones.
+  ExpectFactorAvailability(AuthFactorsSet{kFactor},
+                           AuthFactorsSet{kSpecialFactor});
+
+  EXPECT_EQ(engine_obvservers_[kFactor].get(), &owner_engine_observer_);
+  EXPECT_NE(engine_obvservers_[kSpecialFactor].get(), &owner_engine_observer_);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  // Upon cleanup, timed-out factor should still be asked
+  // to stop auth flow.
+  ExpectAllFactorsShutdown();
+
+  EXPECT_CALL(owner_, OnAttemptFinished(_));
+  EXPECT_CALL(owner_, OnIdle());
+
+  lifecycle_->CancelAttempt();
+}
+
+TEST_F(AuthHubVectorLifecycleTest, FactorCriticalErrorDuringInit) {
+  SetUpEngine(kFactor);
+  SetUpEngine(kSpecialFactor);
+  InitLifecycle();
+
+  EXPECT_TRUE(lifecycle_->IsIdle());
+
+  AuthAttemptVector attempt{account_, AuthPurpose::kLogin};
+  // Start auth attempt, Lifecycle sets observer to engine.
+  lifecycle_->StartAttempt(attempt);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  ExpectOwnerAttemptStartCalled(attempt);
+
+  engine_obvservers_[kFactor]->OnFactorPresenceChecked(kFactor, true);
+  engine_obvservers_[kFactor]->OnCriticalError(kSpecialFactor);
+
+  // Upon initialization Lifecycle should report usable and failed factors, and
+  // update Observer to Owner for usable ones.
+
+  ExpectFactorAvailability(AuthFactorsSet{kFactor},
+                           AuthFactorsSet{kSpecialFactor});
+
+  EXPECT_EQ(engine_obvservers_[kFactor].get(), &owner_engine_observer_);
+  EXPECT_NE(engine_obvservers_[kSpecialFactor].get(), &owner_engine_observer_);
+  EXPECT_FALSE(lifecycle_->IsIdle());
+
+  // Upon cleanup, failed factor should still be asked to stop auth flow.
+  ExpectAllFactorsShutdown();
+
+  EXPECT_CALL(owner_, OnAttemptFinished(_));
+  EXPECT_CALL(owner_, OnIdle());
+
+  lifecycle_->CancelAttempt();
+}
+
+TEST_F(AuthHubVectorLifecycleTest, FactorTimedOutDuringShutdown) {
+  auto* engine = SetUpEngine(kFactor);
+  auto* timeout_engine = SetUpEngine(kSpecialFactor);
+  InitLifecycle();
+
+  AuthAttemptVector attempt{account_, AuthPurpose::kLogin};
+  StartAttemptWithAllFactors(attempt);
+
+  EXPECT_CALL(*engine, StopAuthFlow(_)).WillOnce(RunOnceCallback<0>(kFactor));
+  AuthFactorEngine::ShutdownCallback callback;
+  EXPECT_CALL(*timeout_engine, StopAuthFlow(_)).WillOnce(MoveArg<0>(&callback));
+  lifecycle_->CancelAttempt();
+
+  ASSERT_FALSE(callback.is_null());
+
+  EXPECT_CALL(owner_, OnAttemptFinished(_));
+  EXPECT_CALL(owner_, OnIdle());
+  EXPECT_CALL(*timeout_engine, StopFlowTimedOut());
+
+  TriggerTimeout();
+}
+
+TEST_F(AuthHubVectorLifecycleTest, SwitchAttemptDuringInit) {
+  auto* engine = SetUpEngine(kFactor);
+  InitLifecycle();
+
+  AuthAttemptVector attempt1{account_, AuthPurpose::kLogin};
+  AuthAttemptVector attempt2{AccountId::FromUserEmail("user2@example.com"),
+                             AuthPurpose::kLogin};
+
+  lifecycle_->StartAttempt(attempt1);
+
+  EXPECT_CALL(*engine, StopAuthFlow(_)).WillOnce(RunOnceCallback<0>(kFactor));
+  ExpectAuthOnEngine(kFactor, attempt2);
+
+  lifecycle_->StartAttempt(attempt2);
+  // Now 1st attempt should be finished and 2nd attempt should take over.
+  engine_obvservers_[kFactor]->OnFactorPresenceChecked(kFactor, true);
+
+  ExpectOwnerAttemptStartCalled(attempt2);
+  // Now the second attempt should be going.
+  engine_obvservers_[kFactor]->OnFactorPresenceChecked(kFactor, true);
+}
+
+}  // namespace ash
diff --git a/chromeos/ash/components/osauth/public/BUILD.gn b/chromeos/ash/components/osauth/public/BUILD.gn
index a1fd21d..998c8c1 100644
--- a/chromeos/ash/components/osauth/public/BUILD.gn
+++ b/chromeos/ash/components/osauth/public/BUILD.gn
@@ -22,5 +22,7 @@
     "auth_parts.h",
     "auth_session_storage.h",
     "common_types.h",
+    "string_utils.cc",
+    "string_utils.h",
   ]
 }
diff --git a/chromeos/ash/components/osauth/public/auth_factor_engine.h b/chromeos/ash/components/osauth/public/auth_factor_engine.h
index bc4e72f..ae3a2a5 100644
--- a/chromeos/ash/components/osauth/public/auth_factor_engine.h
+++ b/chromeos/ash/components/osauth/public/auth_factor_engine.h
@@ -23,14 +23,15 @@
 //   giving them a chance to wait for underlying services to become ready.
 // * Once authentication attempt starts (for user/purpose), AuthHub
 //   invokes `StartAuthFlow` on each factor engine to query if the factor
-//   is present for the user/purpose.
+//   is present for the user/purpose. Factors are started in `kDisabled` state
+//   and would be enabled by AuthHub once all factors are ready.
 // * If factor is not present, `StopAuthFlow` would eventually be called on
 //   corresponding engine to release resources.
 // * If factor is present, AuthHub would check if there are any restrictions
 //   on using this factor, by querying methods like `IsDisabledByPolicy`.
 //   Once all restrictions are checked, factor might be disabled via calling
-//   `SetEnabled(false)` method. Disabled factor should not allow any
-//   authentication attempts.
+//   `SetUsageAllowed(kDisabled)` method. Disabled factor should not allow
+//   any authentication attempts.
 // * While authentication is active, factor engine should notify AuthHub
 //   about any events that might change factor restrictions: policy changes,
 //   factor lockout, etc.
@@ -63,6 +64,7 @@
   // When notifying methods, engine should identify itself by
   // providing `factor` value same as one returned by `GetFactor()`.
   class FactorEngineObserver {
+   public:
     virtual ~FactorEngineObserver() = default;
 
     // Notify AuthHub about result of factor presence check.
@@ -123,14 +125,15 @@
                              AuthPurpose purpose,
                              FactorEngineObserver* observer) = 0;
 
+  // The way for the owning object to change the object that would
+  // be notified about engine events.
+  // All events after this call should be sent using new `observer`.
+  virtual void UpdateObserver(FactorEngineObserver* observer) = 0;
+
   // After this call Engine should stop notifying an `observer` set in
   // `StartAttempt`, and release any resources allocated as a result of
   // starting attempt.
-  // User/purpose are provided for convenience, they would match
-  // the ones passed in `StartAuthFlow` call.
-  virtual void StopAuthFlow(const AccountId& account,
-                            AuthPurpose purpose,
-                            ShutdownCallback callback) = 0;
+  virtual void StopAuthFlow(ShutdownCallback callback) = 0;
 
   // Used by AuthHub to control if authentication attempts can be performed
   // by the engine. Most relevant for factors like fingerprint that can not
@@ -158,6 +161,8 @@
   // timeout during relevant lifecycle operations.
   virtual void InitializationTimedOut() {}
   virtual void ShutdownTimedOut() {}
+  virtual void StartFlowTimedOut() {}
+  virtual void StopFlowTimedOut() {}
 };
 
 }  // namespace ash
diff --git a/chromeos/ash/components/osauth/public/auth_factor_status_consumer.h b/chromeos/ash/components/osauth/public/auth_factor_status_consumer.h
index 2744f39..e818993 100644
--- a/chromeos/ash/components/osauth/public/auth_factor_status_consumer.h
+++ b/chromeos/ash/components/osauth/public/auth_factor_status_consumer.h
@@ -21,13 +21,14 @@
 enum class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) AuthFactorState {
   kCheckingForPresence,
   kEngineError,
+  kNoFactor,
   kFactorReady,
   kDisabledByPolicy,
   kDisabledStrongFactorRequired,
   kLockedOutIndefinite,
   kLockedOutTemporary,
-  kDisabledParallelAttempt,
   kDisabledFactorSpecific,
+  kDisabledParallelAttempt,
   kOngoingAttempt,
   kMaxValue = kOngoingAttempt,
 };
diff --git a/chromeos/ash/components/osauth/public/auth_hub.h b/chromeos/ash/components/osauth/public/auth_hub.h
index 3afd7d38..1b17b925c7 100644
--- a/chromeos/ash/components/osauth/public/auth_hub.h
+++ b/chromeos/ash/components/osauth/public/auth_hub.h
@@ -9,9 +9,12 @@
 #include "base/functional/callback.h"
 #include "chromeos/ash/components/osauth/public/auth_parts.h"
 #include "chromeos/ash/components/osauth/public/common_types.h"
+#include "components/account_id/account_id.h"
 
 namespace ash {
 
+class AuthAttemptConsumer;
+
 // Main entry point for ChromeOS local Authentication.
 class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH) AuthHub {
  public:
@@ -28,10 +31,16 @@
   // * Until ChromeOS multi-profile is made obsolette by Lacros
   //   AuthHub would need to go `kInSession`->`kLoginScreen`->`kInSession`
   //   when showing/hiding "Add user" screen.
+  // This method should not be called from other AuthHub callbacks
+  // to prevent reenterant loops.
   virtual void InitializeForMode(AuthHubMode target) = 0;
 
   virtual void EnsureInitialized(base::OnceClosure on_initialized) = 0;
 
+  virtual void StartAuthentication(AccountId accountId,
+                                   AuthPurpose purpose,
+                                   AuthAttemptConsumer* consumer) = 0;
+
   virtual ~AuthHub() = default;
 };
 
diff --git a/chromeos/ash/components/osauth/public/string_utils.cc b/chromeos/ash/components/osauth/public/string_utils.cc
new file mode 100644
index 0000000..6f1f715d
--- /dev/null
+++ b/chromeos/ash/components/osauth/public/string_utils.cc
@@ -0,0 +1,51 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/ash/components/osauth/public/string_utils.h"
+
+namespace ash {
+
+std::ostream& operator<<(std::ostream& out, AuthPurpose purpose) {
+  switch (purpose) {
+#define PRINT(s)          \
+  case AuthPurpose::k##s: \
+    return out << #s;
+    PRINT(Login)
+    PRINT(AuthSettings)
+    PRINT(ScreenUnlock)
+    PRINT(WebAuthN)
+    PRINT(UserVerification)
+#undef PRINT
+  }
+}
+
+std::ostream& operator<<(std::ostream& out, AshAuthFactor factor) {
+  switch (factor) {
+#define PRINT(s)            \
+  case AshAuthFactor::k##s: \
+    return out << #s;
+    PRINT(GaiaPassword)
+    PRINT(CryptohomePin)
+    PRINT(SmartCard)
+    PRINT(SmartUnlock)
+    PRINT(Recovery)
+    PRINT(LegacyPin)
+    PRINT(LegacyFingerprint)
+#undef PRINT
+  }
+}
+
+std::ostream& operator<<(std::ostream& out, AuthHubMode mode) {
+  switch (mode) {
+#define PRINT(s)          \
+  case AuthHubMode::k##s: \
+    return out << #s;
+    PRINT(None)
+    PRINT(LoginScreen)
+    PRINT(InSession)
+#undef PRINT
+  }
+}
+
+}  // namespace ash
diff --git a/chromeos/ash/components/osauth/public/string_utils.h b/chromeos/ash/components/osauth/public/string_utils.h
new file mode 100644
index 0000000..b3d5477
--- /dev/null
+++ b/chromeos/ash/components/osauth/public/string_utils.h
@@ -0,0 +1,27 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_ASH_COMPONENTS_OSAUTH_PUBLIC_STRING_UTILS_H_
+#define CHROMEOS_ASH_COMPONENTS_OSAUTH_PUBLIC_STRING_UTILS_H_
+
+#include <ostream>
+
+#include "base/component_export.h"
+#include "chromeos/ash/components/osauth/public/common_types.h"
+
+namespace ash {
+
+// Output operators for logging.
+COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH)
+std::ostream& operator<<(std::ostream& out, AuthPurpose purpose);
+
+COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH)
+std::ostream& operator<<(std::ostream& out, AshAuthFactor factor);
+
+COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_OSAUTH)
+std::ostream& operator<<(std::ostream& out, AuthHubMode mode);
+
+}  // namespace ash
+
+#endif  // CHROMEOS_ASH_COMPONENTS_OSAUTH_PUBLIC_STRING_UTILS_H_
diff --git a/chromeos/ash/components/osauth/test_support/BUILD.gn b/chromeos/ash/components/osauth/test_support/BUILD.gn
index 5cce5006..71a19bc 100644
--- a/chromeos/ash/components/osauth/test_support/BUILD.gn
+++ b/chromeos/ash/components/osauth/test_support/BUILD.gn
@@ -20,9 +20,13 @@
     "//testing/gtest",
   ]
   sources = [
+    "mock_auth_attempt_consumer.cc",
+    "mock_auth_attempt_consumer.h",
     "mock_auth_factor_engine.cc",
     "mock_auth_factor_engine.h",
     "mock_auth_factor_engine_factory.cc",
     "mock_auth_factor_engine_factory.h",
+    "mock_auth_factor_status_consumer.cc",
+    "mock_auth_factor_status_consumer.h",
   ]
 }
diff --git a/chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.cc b/chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.cc
new file mode 100644
index 0000000..99bd91a
--- /dev/null
+++ b/chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.cc
@@ -0,0 +1,13 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.h"
+
+namespace ash {
+
+MockAuthAttemptConsumer::MockAuthAttemptConsumer() = default;
+
+MockAuthAttemptConsumer::~MockAuthAttemptConsumer() = default;
+
+}  // namespace ash
diff --git a/chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.h b/chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.h
new file mode 100644
index 0000000..31d7514
--- /dev/null
+++ b/chromeos/ash/components/osauth/test_support/mock_auth_attempt_consumer.h
@@ -0,0 +1,36 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_ASH_COMPONENTS_OSAUTH_TEST_SUPPORT_MOCK_AUTH_ATTEMPT_CONSUMER_H_
+#define CHROMEOS_ASH_COMPONENTS_OSAUTH_TEST_SUPPORT_MOCK_AUTH_ATTEMPT_CONSUMER_H_
+
+#include "chromeos/ash/components/osauth/public/auth_attempt_consumer.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace ash {
+
+class MockAuthAttemptConsumer : public AuthAttemptConsumer {
+ public:
+  MockAuthAttemptConsumer();
+  MockAuthAttemptConsumer(const MockAuthAttemptConsumer&) = delete;
+  MockAuthAttemptConsumer& operator=(const MockAuthAttemptConsumer&) = delete;
+  ~MockAuthAttemptConsumer() override;
+
+  MOCK_METHOD(void, OnUserAuthAttemptRejected, (), (override));
+  MOCK_METHOD(void,
+              OnUserAuthAttemptConfirmed,
+              (AuthHubConnector*, raw_ptr<AuthFactorStatusConsumer>&),
+              (override));
+  MOCK_METHOD(void, OnAccountNotFound, (), (override));
+  MOCK_METHOD(void, OnUserAuthAttemptCancelled, (), (override));
+  MOCK_METHOD(void, OnFactorAttemptFailed, (AshAuthFactor), (override));
+  MOCK_METHOD(void,
+              OnUserAuthSuccess,
+              (AshAuthFactor, const AuthProofToken&),
+              (override));
+};
+
+}  // namespace ash
+
+#endif  // CHROMEOS_ASH_COMPONENTS_OSAUTH_TEST_SUPPORT_MOCK_AUTH_ATTEMPT_CONSUMER_H_
diff --git a/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.cc b/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.cc
index 5098de1..2b205fc 100644
--- a/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.cc
+++ b/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.cc
@@ -4,12 +4,14 @@
 
 #include "chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h"
 
-#include <memory>
-
 namespace ash {
 
 MockAuthFactorEngine::MockAuthFactorEngine() = default;
 
 MockAuthFactorEngine::~MockAuthFactorEngine() = default;
 
+MockAuthFactorEngineObserver::MockAuthFactorEngineObserver() = default;
+
+MockAuthFactorEngineObserver::~MockAuthFactorEngineObserver() = default;
+
 }  // namespace ash
diff --git a/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h b/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h
index 7e1596c..3459ba6 100644
--- a/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h
+++ b/chromeos/ash/components/osauth/test_support/mock_auth_factor_engine.h
@@ -24,16 +24,39 @@
               StartAuthFlow,
               (const AccountId&, AuthPurpose, FactorEngineObserver*),
               (override));
-  MOCK_METHOD(void,
-              StopAuthFlow,
-              (const AccountId&, AuthPurpose, ShutdownCallback),
-              (override));
+  MOCK_METHOD(void, UpdateObserver, (FactorEngineObserver*), (override));
+  MOCK_METHOD(void, StopAuthFlow, (ShutdownCallback), (override));
   MOCK_METHOD(void, SetUsageAllowed, (UsageAllowed), (override));
   MOCK_METHOD(bool, IsDisabledByPolicy, (), (override));
   MOCK_METHOD(bool, IsLockedOut, (), (override));
   MOCK_METHOD(bool, IsOrientationRestricted, (), (override));
   MOCK_METHOD(void, InitializationTimedOut, (), (override));
   MOCK_METHOD(void, ShutdownTimedOut, (), (override));
+  MOCK_METHOD(void, StartFlowTimedOut, (), (override));
+  MOCK_METHOD(void, StopFlowTimedOut, (), (override));
+};
+
+class MockAuthFactorEngineObserver
+    : public AuthFactorEngine::FactorEngineObserver {
+ public:
+  MockAuthFactorEngineObserver();
+  MockAuthFactorEngineObserver(const MockAuthFactorEngineObserver&) = delete;
+  MockAuthFactorEngineObserver& operator=(const MockAuthFactorEngineObserver&) =
+      delete;
+  ~MockAuthFactorEngineObserver() override;
+
+  MOCK_METHOD(void, OnFactorPresenceChecked, (AshAuthFactor, bool), (override));
+  MOCK_METHOD(void, OnFactorAttempt, (AshAuthFactor), (override));
+  MOCK_METHOD(void, OnFactorAttemptResult, (AshAuthFactor, bool), (override));
+
+  MOCK_METHOD(void, OnPolicyChanged, (AshAuthFactor), (override));
+  MOCK_METHOD(void, OnLockoutChanged, (AshAuthFactor), (override));
+  MOCK_METHOD(void,
+              OnOrientationRestrictionsChanged,
+              (AshAuthFactor),
+              (override));
+  MOCK_METHOD(void, OnCriticalError, (AshAuthFactor), (override));
+  MOCK_METHOD(void, OnFactorCustomSignal, (AshAuthFactor), (override));
 };
 
 }  // namespace ash
diff --git a/chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.cc b/chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.cc
new file mode 100644
index 0000000..03fbeba
--- /dev/null
+++ b/chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.cc
@@ -0,0 +1,13 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.h"
+
+namespace ash {
+
+MockAuthFactorStatusConsumer::MockAuthFactorStatusConsumer() = default;
+
+MockAuthFactorStatusConsumer::~MockAuthFactorStatusConsumer() = default;
+
+}  // namespace ash
diff --git a/chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.h b/chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.h
new file mode 100644
index 0000000..f6a213e
--- /dev/null
+++ b/chromeos/ash/components/osauth/test_support/mock_auth_factor_status_consumer.h
@@ -0,0 +1,34 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_ASH_COMPONENTS_OSAUTH_TEST_SUPPORT_MOCK_AUTH_FACTOR_STATUS_CONSUMER_H_
+#define CHROMEOS_ASH_COMPONENTS_OSAUTH_TEST_SUPPORT_MOCK_AUTH_FACTOR_STATUS_CONSUMER_H_
+
+#include "chromeos/ash/components/osauth/public/auth_factor_status_consumer.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace ash {
+
+class MockAuthFactorStatusConsumer : public AuthFactorStatusConsumer {
+ public:
+  MockAuthFactorStatusConsumer();
+  MockAuthFactorStatusConsumer(const MockAuthFactorStatusConsumer&) = delete;
+  MockAuthFactorStatusConsumer& operator=(const MockAuthFactorStatusConsumer&) =
+      delete;
+  ~MockAuthFactorStatusConsumer() override;
+
+  MOCK_METHOD(void,
+              InitializeUi,
+              (AuthFactorsSet, AuthHubConnector*),
+              (override));
+  MOCK_METHOD(void, OnFactorListChanged, (FactorsStatusMap), (override));
+  MOCK_METHOD(void, OnFactorStatusesChanged, (FactorsStatusMap), (override));
+  MOCK_METHOD(void, OnFactorAuthFailure, (AshAuthFactor), (override));
+  MOCK_METHOD(void, OnFactorAuthSuccess, (AshAuthFactor), (override));
+  MOCK_METHOD(void, OnEndAuthentication, (), (override));
+};
+
+}  // namespace ash
+
+#endif  // CHROMEOS_ASH_COMPONENTS_OSAUTH_TEST_SUPPORT_MOCK_AUTH_FACTOR_STATUS_CONSUMER_H_
diff --git a/chromeos/ash/components/proximity_auth/BUILD.gn b/chromeos/ash/components/proximity_auth/BUILD.gn
index 0c57e65..584df23 100644
--- a/chromeos/ash/components/proximity_auth/BUILD.gn
+++ b/chromeos/ash/components/proximity_auth/BUILD.gn
@@ -16,7 +16,6 @@
     "metrics.cc",
     "metrics.h",
     "proximity_auth_client.h",
-    "proximity_auth_pref_manager.h",
     "proximity_auth_pref_names.cc",
     "proximity_auth_pref_names.h",
     "proximity_auth_profile_pref_manager.cc",
diff --git a/chromeos/ash/components/proximity_auth/mock_proximity_auth_client.h b/chromeos/ash/components/proximity_auth/mock_proximity_auth_client.h
index 1b24443..36ddeba4 100644
--- a/chromeos/ash/components/proximity_auth/mock_proximity_auth_client.h
+++ b/chromeos/ash/components/proximity_auth/mock_proximity_auth_client.h
@@ -28,7 +28,6 @@
   MOCK_METHOD1(FinalizeUnlock, void(bool success));
   MOCK_METHOD1(FinalizeSignin, void(const std::string& secret));
   MOCK_CONST_METHOD0(GetAuthenticatedUsername, std::string(void));
-  MOCK_METHOD0(GetPrefManager, ProximityAuthPrefManager*(void));
 };
 
 }  // namespace proximity_auth
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_client.h b/chromeos/ash/components/proximity_auth/proximity_auth_client.h
index 2d8c25b..a02697c 100644
--- a/chromeos/ash/components/proximity_auth/proximity_auth_client.h
+++ b/chromeos/ash/components/proximity_auth/proximity_auth_client.h
@@ -6,7 +6,6 @@
 #define CHROMEOS_ASH_COMPONENTS_PROXIMITY_AUTH_PROXIMITY_AUTH_CLIENT_H_
 
 #include "ash/public/cpp/smartlock_state.h"
-#include "chromeos/ash/components/proximity_auth/proximity_auth_pref_manager.h"
 #include "chromeos/ash/services/device_sync/proto/cryptauth_api.pb.h"
 
 namespace proximity_auth {
@@ -26,9 +25,6 @@
   // the screen is unlocked; otherwise, the auth attempt is rejected. An auth
   // attempt must be in progress before calling this function.
   virtual void FinalizeUnlock(bool success) = 0;
-
-  // Returns the manager responsible for EasyUnlock preferences.
-  virtual ProximityAuthPrefManager* GetPrefManager() = 0;
 };
 
 }  // namespace proximity_auth
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_pref_manager.h b/chromeos/ash/components/proximity_auth/proximity_auth_pref_manager.h
deleted file mode 100644
index ace8f18..0000000
--- a/chromeos/ash/components/proximity_auth/proximity_auth_pref_manager.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROMEOS_ASH_COMPONENTS_PROXIMITY_AUTH_PROXIMITY_AUTH_PREF_MANAGER_H_
-#define CHROMEOS_ASH_COMPONENTS_PROXIMITY_AUTH_PROXIMITY_AUTH_PREF_MANAGER_H_
-
-#include <stdint.h>
-
-namespace proximity_auth {
-
-// Interface for setting and getting persistent user preferences. There is an
-// implementation for a logged in profile and the device local state when the
-// user is logged out.
-// TODO(b/227674947): Now that Sign in with Smart Lock is removed, this class is
-// no longer needed before a user logs in. ProximityAuthPrefManager and
-// ProximityAuthProfilePrefManager can be combined into one class.
-class ProximityAuthPrefManager {
- public:
-  ProximityAuthPrefManager() {}
-
-  ProximityAuthPrefManager(const ProximityAuthPrefManager&) = delete;
-  ProximityAuthPrefManager& operator=(const ProximityAuthPrefManager&) = delete;
-
-  virtual ~ProximityAuthPrefManager() {}
-
-  // Returns true if EasyUnlock is allowed. Note: there is no corresponding
-  // setter because this pref is pushed through an enterprise policy. Note that
-  // this pref completely disables EasyUnlock, hiding even the UI. See
-  // IsEasyUnlockEnabled() for comparison.
-  virtual bool IsEasyUnlockAllowed() const = 0;
-
-  // Returns true if EasyUnlock is enabled, i.e. the user has gone through the
-  // setup flow and has at least one phone as an unlock key. Compare to
-  // IsEasyUnlockAllowed(), which completely removes the feature from existence.
-  virtual void SetIsEasyUnlockEnabled(bool is_easy_unlock_enabled) const = 0;
-  virtual bool IsEasyUnlockEnabled() const = 0;
-
-  // Returns true if EasyUnlock has ever been enabled, regardless of whether the
-  // feature is currently enabled or disabled. Compare to IsEasyUnlockEnabled(),
-  // which flags the latter case.
-  virtual void SetEasyUnlockEnabledStateSet() const = 0;
-  virtual bool IsEasyUnlockEnabledStateSet() const = 0;
-
-  // Setter and getter for the timestamp of the last time the promotion was
-  // shown to the user.
-  virtual void SetLastPromotionCheckTimestampMs(int64_t timestamp_ms) = 0;
-  virtual int64_t GetLastPromotionCheckTimestampMs() const = 0;
-
-  // Setter and getter for the number of times the promotion was shown to the
-  // user.
-  virtual void SetPromotionShownCount(int count) = 0;
-  virtual int GetPromotionShownCount() const = 0;
-};
-
-}  // namespace proximity_auth
-
-#endif  // CHROMEOS_ASH_COMPONENTS_PROXIMITY_AUTH_PROXIMITY_AUTH_PREF_MANAGER_H_
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.h b/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.h
index 4492d039..116c72cd 100644
--- a/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.h
+++ b/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.h
@@ -7,7 +7,6 @@
 
 #include "base/memory/raw_ptr.h"
 #include "base/memory/weak_ptr.h"
-#include "chromeos/ash/components/proximity_auth/proximity_auth_pref_manager.h"
 #include "chromeos/ash/services/multidevice_setup/public/cpp/multidevice_setup_client.h"
 #include "components/account_id/account_id.h"
 
@@ -19,11 +18,10 @@
 
 namespace proximity_auth {
 
-// Implementation of ProximityAuthPrefManager for a logged in session with a
-// user profile.
+// Interface for setting and getting persistent user preferences for a logged in
+// session with a user profile.
 class ProximityAuthProfilePrefManager
-    : public ProximityAuthPrefManager,
-      public ash::multidevice_setup::MultiDeviceSetupClient::Observer {
+    : public ash::multidevice_setup::MultiDeviceSetupClient::Observer {
  public:
   // Creates a pref manager backed by preferences registered in
   // |pref_service| (persistent across browser restarts). |pref_service| should
@@ -43,16 +41,33 @@
   // Registers the prefs used by this class to the given |pref_service|.
   static void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry);
 
-  // ProximityAuthPrefManager:
-  bool IsEasyUnlockAllowed() const override;
-  void SetIsEasyUnlockEnabled(bool is_easy_unlock_enabled) const override;
-  bool IsEasyUnlockEnabled() const override;
-  void SetEasyUnlockEnabledStateSet() const override;
-  bool IsEasyUnlockEnabledStateSet() const override;
-  void SetLastPromotionCheckTimestampMs(int64_t timestamp_ms) override;
-  int64_t GetLastPromotionCheckTimestampMs() const override;
-  void SetPromotionShownCount(int count) override;
-  int GetPromotionShownCount() const override;
+  // Returns true if EasyUnlock is allowed. Note: there is no corresponding
+  // setter because this pref is pushed through an enterprise policy. Note that
+  // this pref completely disables EasyUnlock, hiding even the UI. See
+  // IsEasyUnlockEnabled() for comparison.
+  bool IsEasyUnlockAllowed() const;
+
+  // Returns true if EasyUnlock is enabled, i.e. the user has gone through the
+  // setup flow and has at least one phone as an unlock key. Compare to
+  // IsEasyUnlockAllowed(), which completely removes the feature from existence.
+  void SetIsEasyUnlockEnabled(bool is_easy_unlock_enabled) const;
+  bool IsEasyUnlockEnabled() const;
+
+  // Returns true if EasyUnlock has ever been enabled, regardless of whether the
+  // feature is currently enabled or disabled. Compare to IsEasyUnlockEnabled(),
+  // which flags the latter case.
+  void SetEasyUnlockEnabledStateSet() const;
+  bool IsEasyUnlockEnabledStateSet() const;
+
+  // Setter and getter for the timestamp of the last time the promotion was
+  // shown to the user.
+  void SetLastPromotionCheckTimestampMs(int64_t timestamp_ms);
+  int64_t GetLastPromotionCheckTimestampMs() const;
+
+  // Setter and getter for the number of times the promotion was shown to the
+  // user.
+  void SetPromotionShownCount(int count);
+  int GetPromotionShownCount() const;
 
   // ash::multidevice_setup::MultiDeviceSetupClient::Observer:
   void OnFeatureStatesChanged(
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_system_unittest.cc b/chromeos/ash/components/proximity_auth/proximity_auth_system_unittest.cc
index 1479993..8fda5036 100644
--- a/chromeos/ash/components/proximity_auth/proximity_auth_system_unittest.cc
+++ b/chromeos/ash/components/proximity_auth/proximity_auth_system_unittest.cc
@@ -101,7 +101,7 @@
   TestableProximityAuthSystem(
       ash::secure_channel::SecureChannelClient* secure_channel_client,
       std::unique_ptr<UnlockManager> unlock_manager,
-      ProximityAuthPrefManager* pref_manager)
+      ProximityAuthProfilePrefManager* pref_manager)
       : ProximityAuthSystem(secure_channel_client, std::move(unlock_manager)),
         life_cycle_(nullptr) {}
 
diff --git a/chromeos/ui/frame/caption_buttons/frame_caption_button_container_view.cc b/chromeos/ui/frame/caption_buttons/frame_caption_button_container_view.cc
index 747fc38..b92a221 100644
--- a/chromeos/ui/frame/caption_buttons/frame_caption_button_container_view.cc
+++ b/chromeos/ui/frame/caption_buttons/frame_caption_button_container_view.cc
@@ -10,11 +10,9 @@
 #include <tuple>
 
 #include "base/command_line.h"
-#include "base/i18n/rtl.h"
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
-#include "chromeos/constants/chromeos_features.h"
 #include "chromeos/strings/grit/chromeos_strings.h"
 #include "chromeos/ui/base/display_util.h"
 #include "chromeos/ui/base/tablet_state.h"
@@ -40,11 +38,9 @@
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/point.h"
-#include "ui/gfx/geometry/size.h"
 #include "ui/gfx/vector_icon_types.h"
 #include "ui/strings/grit/ui_strings.h"  // Accessibility names
 #include "ui/views/background.h"
-#include "ui/views/border.h"
 #include "ui/views/layout/box_layout.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_delegate.h"
@@ -428,22 +424,7 @@
   menu_button_->SetPreferredSize(size);
   minimize_button_->SetPreferredSize(size);
   size_button_->SetPreferredSize(size);
-  if (features::IsJellyrollEnabled()) {
-    // When feature Jellyroll is enabled, make the target width of close button
-    // 8 DIP wider on the right side than other caption buttons.
-    constexpr int kExtraTargetSpaceForCloseButton = 8;
-    close_button_->SetPreferredSize(gfx::Size(
-        size.width() + kExtraTargetSpaceForCloseButton, size.height()));
-    // Since we want the space between the caption buttons to remain the same,
-    // the extra space for the close button should be added to the right side of
-    // it if RTL is disabled, otherwise the extra space should be added to the
-    // left side.
-    close_button_->SetBorder(views::CreateEmptyBorder(gfx::Insets::TLBR(
-        0, base::i18n::IsRTL() ? kExtraTargetSpaceForCloseButton : 0, 0,
-        base::i18n::IsRTL() ? 0 : kExtraTargetSpaceForCloseButton)));
-  } else {
-    close_button_->SetPreferredSize(size);
-  }
+  close_button_->SetPreferredSize(size);
 
   SetMinimumCrossAxisSize(size.height());
 }
diff --git a/components/browser_ui/styles/android/java/res/values-night/colors.xml b/components/browser_ui/styles/android/java/res/values-night/colors.xml
index bdcdb30..b74f81b 100644
--- a/components/browser_ui/styles/android/java/res/values-night/colors.xml
+++ b/components/browser_ui/styles/android/java/res/values-night/colors.xml
@@ -20,5 +20,4 @@
     <color name="empty_state_icon_bg_color">@color/material_primary_20</color>
     <color name="empty_state_icon_bg_background_color">@color/material_primary_10</color>
     <color name="empty_state_icon_bg_foreground_color">@color/material_primary_20</color>
-    <color name="empty_state_icon_tabswitcher_bg_color">@macro/default_bg_color_elev_0</color>
 </resources>
diff --git a/components/browser_ui/styles/android/java/res/values/colors.xml b/components/browser_ui/styles/android/java/res/values/colors.xml
index c4bf1308..2b1fb42 100644
--- a/components/browser_ui/styles/android/java/res/values/colors.xml
+++ b/components/browser_ui/styles/android/java/res/values/colors.xml
@@ -57,5 +57,4 @@
     <color name="empty_state_icon_bg_background_color">@color/material_primary_95</color>
     <color name="empty_state_icon_bg_foreground_color">@color/material_primary_90</color>
     <color name="empty_state_icon_color">@color/material_primary_40</color>
-    <color name="empty_state_icon_tabswitcher_bg_color">@color/material_primary_95</color>
 </resources>
diff --git a/components/exo/wayland/fuzzer/harness.cc.tmpl b/components/exo/wayland/fuzzer/harness.cc.tmpl
index ddcd0ce..e672b29 100644
--- a/components/exo/wayland/fuzzer/harness.cc.tmpl
+++ b/components/exo/wayland/fuzzer/harness.cc.tmpl
@@ -177,11 +177,16 @@
 }
 
 Harness::~Harness() {
-  for (auto ifc : wl_display_list_) {
-    if (ifc) {
-      wl_display_disconnect(ifc);
+  {% for interface in interfaces %}
+    for (auto ifc : {{interface.name}}_list_) {
+      if (ifc)
+        {% if interface.name == "wl_display" %}
+          wl_display_disconnect(ifc);
+        {% else %}
+          free(ifc);
+        {% endif %}
     }
-  }
+  {% endfor %}
 }
 
 void Harness::Run(const actions::actions& all_steps) {
diff --git a/components/feedback/redaction_tool/redaction_tool.cc b/components/feedback/redaction_tool/redaction_tool.cc
index 07d1950..814ac96 100644
--- a/components/feedback/redaction_tool/redaction_tool.cc
+++ b/components/feedback/redaction_tool/redaction_tool.cc
@@ -876,7 +876,7 @@
     // Timestamps in ms have a surprisingly high number of false positives.
     // Also log entries but those usually only match if there are several spaces
     // tying unrelated numbers together.
-    if (post_sequence.contains("ms")) {
+    if (post_sequence.find("ms") != re2::StringPiece::npos) {
       RecordCreditCardRedactionHistogram(CreditCardDetection::kTimestamp);
       result.append(sequence.data(), sequence.size());
       result.append(post_sequence.data(), post_sequence.size());
@@ -1105,7 +1105,7 @@
 bool IsUrlExempt(re2::StringPiece url,
                  const char* const* first_party_extension_ids) {
   // We do not exempt anything with a query parameter.
-  if (url.contains("?")) {
+  if (url.find("?") != re2::StringPiece::npos) {
     return false;
   }
 
diff --git a/components/metrics/structured/BUILD.gn b/components/metrics/structured/BUILD.gn
index aa6c083..f08d1d12 100644
--- a/components/metrics/structured/BUILD.gn
+++ b/components/metrics/structured/BUILD.gn
@@ -16,6 +16,8 @@
     "key_data.h",
     "persistent_proto.cc",
     "persistent_proto.h",
+    "reporting/structured_metrics_log_metrics.cc",
+    "reporting/structured_metrics_log_metrics.h",
     "reporting/structured_metrics_reporting_service.cc",
     "reporting/structured_metrics_reporting_service.h",
     "structured_metrics_prefs.cc",
diff --git a/components/metrics/structured/reporting/structured_metrics_log_metrics.cc b/components/metrics/structured/reporting/structured_metrics_log_metrics.cc
new file mode 100644
index 0000000..eb30779
--- /dev/null
+++ b/components/metrics/structured/reporting/structured_metrics_log_metrics.cc
@@ -0,0 +1,29 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/metrics/structured/reporting/structured_metrics_log_metrics.h"
+
+#include "base/metrics/histogram_functions.h"
+
+namespace metrics::structured::reporting {
+void StructuredMetricsLogMetrics::RecordCompressionRatio(size_t compressed_size,
+                                                         size_t original_size) {
+  CHECK(original_size != 0);
+  double ratio = static_cast<double>(compressed_size) / original_size;
+  base::UmaHistogramPercentage("StructuredMetrics.LogStore.CompressionRatio",
+                               static_cast<int>(100 * ratio));
+}
+
+void StructuredMetricsLogMetrics::RecordDroppedLogSize(size_t size) {
+  const size_t size_kb = size / 1024;
+  base::UmaHistogramCounts10000("StructuredMetrics.LogStore.DroppedSize",
+                                size_kb);
+}
+
+void StructuredMetricsLogMetrics::RecordDroppedLogsNum(int dropped_logs_num) {
+  base::UmaHistogramCounts100000("StructuredMetrics.LogStore.Dropped",
+                                 dropped_logs_num);
+}
+
+}  // namespace metrics::structured::reporting
diff --git a/components/metrics/structured/reporting/structured_metrics_log_metrics.h b/components/metrics/structured/reporting/structured_metrics_log_metrics.h
new file mode 100644
index 0000000..14532b8
--- /dev/null
+++ b/components/metrics/structured/reporting/structured_metrics_log_metrics.h
@@ -0,0 +1,28 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_METRICS_STRUCTURED_REPORTING_STRUCTURED_METRICS_LOG_METRICS_H_
+#define COMPONENTS_METRICS_STRUCTURED_REPORTING_STRUCTURED_METRICS_LOG_METRICS_H_
+
+#include "components/metrics/unsent_log_store_metrics.h"
+
+namespace metrics::structured::reporting {
+
+class StructuredMetricsLogMetrics : public UnsentLogStoreMetrics {
+ public:
+  StructuredMetricsLogMetrics() = default;
+
+  ~StructuredMetricsLogMetrics() override = default;
+
+  void RecordCompressionRatio(size_t compressed_size,
+                              size_t original_size) override;
+
+  void RecordDroppedLogSize(size_t size) override;
+
+  void RecordDroppedLogsNum(int dropped_logs_num) override;
+};
+
+}  // namespace metrics::structured::reporting
+
+#endif  // COMPONENTS_METRICS_STRUCTURED_REPORTING_STRUCTURED_METRICS_LOG_METRICS_H_
diff --git a/components/metrics/structured/reporting/structured_metrics_reporting_service.cc b/components/metrics/structured/reporting/structured_metrics_reporting_service.cc
index 896a9f6..671c127e 100644
--- a/components/metrics/structured/reporting/structured_metrics_reporting_service.cc
+++ b/components/metrics/structured/reporting/structured_metrics_reporting_service.cc
@@ -5,8 +5,8 @@
 #include "components/metrics/structured/reporting/structured_metrics_reporting_service.h"
 #include "base/metrics/histogram_functions.h"
 #include "components/metrics/metrics_service_client.h"
+#include "components/metrics/structured/reporting/structured_metrics_log_metrics.h"
 #include "components/metrics/structured/structured_metrics_prefs.h"
-#include "components/metrics/unsent_log_store_metrics_impl.h"
 #include "components/metrics/url_constants.h"
 #include "components/prefs/pref_registry_simple.h"
 
@@ -19,7 +19,7 @@
                        local_state,
                        storage_limits.max_log_size,
                        /*logs_event_manager=*/nullptr),
-      log_store_(std::make_unique<metrics::UnsentLogStoreMetricsImpl>(),
+      log_store_(std::make_unique<StructuredMetricsLogMetrics>(),
                  local_state,
                  prefs::kLogStoreName,
                  /* metadata_pref_name=*/nullptr,
diff --git a/components/ntp_tiles/features.cc b/components/ntp_tiles/features.cc
index 2604911..0d1ee2bf 100644
--- a/components/ntp_tiles/features.cc
+++ b/components/ntp_tiles/features.cc
@@ -25,23 +25,23 @@
              "UsePopularSitesSuggestions",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
-BASE_FEATURE(kNewTabPageRetention,
-             "IOSNewTabPageRetention",
+BASE_FEATURE(kNewTabPageFieldTrial,
+             "IOSNewTabPageFieldTrials",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
-const char kNewTabPageRetentionName[] = "IOSNewTabPageRetention";
+const char kNewTabPageFieldTrialName[] = "IOSNewTabPageFieldTrials";
 
-const char kNewTabPageRetentionParam[] = "NewTabPageRetentionParam";
+const char kNewTabPageFieldTrialParam[] = "NewTabPageFieldTrialParam";
 
-NewTabPageRetentionExperimentBehavior GetNewTabPageRetentionExperimentType() {
-  if (base::FeatureList::IsEnabled(kNewTabPageRetention)) {
-    return (NewTabPageRetentionExperimentBehavior)
-        base::GetFieldTrialParamByFeatureAsInt(kNewTabPageRetention,
-                                               kNewTabPageRetentionParam,
+NewTabPageFieldTrialExperimentBehavior GetNewTabPageFieldTrialExperimentType() {
+  if (base::FeatureList::IsEnabled(kNewTabPageFieldTrial)) {
+    return (NewTabPageFieldTrialExperimentBehavior)
+        base::GetFieldTrialParamByFeatureAsInt(kNewTabPageFieldTrial,
+                                               kNewTabPageFieldTrialParam,
                                                /*default_value=*/0);
   }
 
-  return NewTabPageRetentionExperimentBehavior::kDefault;
+  return NewTabPageFieldTrialExperimentBehavior::kDefault;
 }
 
 }  // namespace ntp_tiles
diff --git a/components/ntp_tiles/features.h b/components/ntp_tiles/features.h
index 3d42045f..81c6ff5 100644
--- a/components/ntp_tiles/features.h
+++ b/components/ntp_tiles/features.h
@@ -9,8 +9,8 @@
 
 namespace ntp_tiles {
 
-// Experiment groups for the new tab page retention experiments.
-enum class NewTabPageRetentionExperimentBehavior {
+// Experiment groups for the new tab page field trial experiments.
+enum class NewTabPageFieldTrialExperimentBehavior {
   // Default.
   kDefault = 0,
   // Hides all NTP tiles for new users.
@@ -36,20 +36,20 @@
 // If this feature is enabled, we enable popular sites in the suggestions UI.
 BASE_DECLARE_FEATURE(kUsePopularSitesSuggestions);
 
-// Feature flag to enable new tab page retention experiment on IOS.
-// Use `GetDefaultNTPRetentionExperimentType()` instead of this
+// Feature flag to enable new tab page field trial experiment on IOS.
+// Use `GetNewTabPageFieldTrialExperimentType()` instead of this
 // constant directly.
-BASE_DECLARE_FEATURE(kNewTabPageRetention);
+BASE_DECLARE_FEATURE(kNewTabPageFieldTrial);
 
-// Feature name for the NTP retention field trial.
-extern const char kNewTabPageRetentionName[];
+// Feature name for the NTP field trial.
+extern const char kNewTabPageFieldTrialName[];
 
-// Feature parameters for the new tab page retention experiment.
-extern const char kNewTabPageRetentionParam[];
+// Feature parameters for the new tab page experiment.
+extern const char kNewTabPageFieldTrialParam[];
 
-// Returns the currently enabled NTP retention experiment type. If none are
+// Returns the currently enabled NTP field trial experiment type. If none are
 // enabled, returns the default value.
-NewTabPageRetentionExperimentBehavior GetNewTabPageRetentionExperimentType();
+NewTabPageFieldTrialExperimentBehavior GetNewTabPageFieldTrialExperimentType();
 
 }  // namespace ntp_tiles
 
diff --git a/components/omnibox/browser/actions/omnibox_action_in_suggest.cc b/components/omnibox/browser/actions/omnibox_action_in_suggest.cc
index 66ddd87..add69a9 100644
--- a/components/omnibox/browser/actions/omnibox_action_in_suggest.cc
+++ b/components/omnibox/browser/actions/omnibox_action_in_suggest.cc
@@ -78,14 +78,17 @@
 }
 }  // namespace
 
-OmniboxActionInSuggest::OmniboxActionInSuggest(omnibox::ActionInfo action_info)
+OmniboxActionInSuggest::OmniboxActionInSuggest(
+    omnibox::ActionInfo action_info,
+    absl::optional<TemplateURLRef::SearchTermsArgs> search_terms_args)
     : OmniboxAction(OmniboxAction::LabelStrings(
                         ToActionHint(action_info.action_type()),
                         ToActionContents(action_info.action_type()),
                         IDS_ACC_OMNIBOX_ACTION_IN_SUGGEST_SUFFIX,
                         IDS_ACC_OMNIBOX_ACTION_IN_SUGGEST),
                     {}),
-      action_info_{std::move(action_info)} {}
+      action_info{std::move(action_info)},
+      search_terms_args{std::move(search_terms_args)} {}
 
 OmniboxActionInSuggest::~OmniboxActionInSuggest() = default;
 
@@ -94,8 +97,8 @@
 OmniboxActionInSuggest::GetOrCreateJavaObject(JNIEnv* env) const {
   if (!j_omnibox_action_) {
     j_omnibox_action_.Reset(BuildOmniboxActionInSuggest(
-        env, strings_.hint, action_info_.action_type(),
-        action_info_.action_uri()));
+        env, strings_.hint, action_info.action_type(),
+        action_info.action_uri()));
   }
   return base::android::ScopedJavaLocalRef<jobject>(j_omnibox_action_);
 }
@@ -104,10 +107,10 @@
 void OmniboxActionInSuggest::RecordActionShown(size_t position,
                                                bool executed) const {
   base::UmaHistogramEnumeration("Omnibox.ActionInSuggest.Shown",
-                                ToUmaActionType(action_info_.action_type()));
+                                ToUmaActionType(action_info.action_type()));
   if (executed) {
     base::UmaHistogramEnumeration("Omnibox.ActionInSuggest.Used",
-                                  ToUmaActionType(action_info_.action_type()));
+                                  ToUmaActionType(action_info.action_type()));
   }
 }
 
@@ -125,12 +128,18 @@
 // static
 const OmniboxActionInSuggest* OmniboxActionInSuggest::FromAction(
     const OmniboxAction* action) {
+  return FromAction(const_cast<OmniboxAction*>(action));
+}
+
+// static
+OmniboxActionInSuggest* OmniboxActionInSuggest::FromAction(
+    OmniboxAction* action) {
   if (action && action->ActionId() == OmniboxActionId::ACTION_IN_SUGGEST) {
-    return static_cast<const OmniboxActionInSuggest*>(action);
+    return static_cast<OmniboxActionInSuggest*>(action);
   }
   return nullptr;
 }
 
 omnibox::ActionInfo::ActionType OmniboxActionInSuggest::Type() const {
-  return action_info_.action_type();
+  return action_info.action_type();
 }
diff --git a/components/omnibox/browser/actions/omnibox_action_in_suggest.h b/components/omnibox/browser/actions/omnibox_action_in_suggest.h
index 839b567..143334b7 100644
--- a/components/omnibox/browser/actions/omnibox_action_in_suggest.h
+++ b/components/omnibox/browser/actions/omnibox_action_in_suggest.h
@@ -5,14 +5,19 @@
 #ifndef COMPONENTS_OMNIBOX_BROWSER_ACTIONS_OMNIBOX_ACTION_IN_SUGGEST_H_
 #define COMPONENTS_OMNIBOX_BROWSER_ACTIONS_OMNIBOX_ACTION_IN_SUGGEST_H_
 
+#include <optional>
+
 #include "components/omnibox/browser/actions/omnibox_action.h"
 #include "components/omnibox/browser/autocomplete_result.h"
+#include "components/search_engines/template_url.h"
 #include "components/strings/grit/components_strings.h"
 #include "third_party/omnibox_proto/entity_info.pb.h"
 
 class OmniboxActionInSuggest : public OmniboxAction {
  public:
-  explicit OmniboxActionInSuggest(omnibox::ActionInfo action_info);
+  OmniboxActionInSuggest(
+      omnibox::ActionInfo action_info,
+      absl::optional<TemplateURLRef::SearchTermsArgs> search_terms_args);
 
 #if BUILDFLAG(IS_ANDROID)
   base::android::ScopedJavaLocalRef<jobject> GetOrCreateJavaObject(
@@ -28,15 +33,14 @@
   // Downcasts the given OmniboxAction to an OmniboxActionInSuggest if the
   // supplied instance represents one, otherwise returns nullptr.
   static const OmniboxActionInSuggest* FromAction(const OmniboxAction* action);
+  static OmniboxActionInSuggest* FromAction(OmniboxAction* action);
+
+  omnibox::ActionInfo action_info{};
+  absl::optional<TemplateURLRef::SearchTermsArgs> search_terms_args{};
 
  private:
-  FRIEND_TEST_ALL_PREFIXES(OmniboxActionInSuggestTest,
-                           ReportMetricsForUnknownType);
-  FRIEND_TEST_ALL_PREFIXES(BaseSearchProviderTest,
-                           CreateActionInSuggest_BuildActionURL);
   ~OmniboxActionInSuggest() override;
 
-  omnibox::ActionInfo action_info_{};
 #if BUILDFLAG(IS_ANDROID)
   mutable base::android::ScopedJavaGlobalRef<jobject> j_omnibox_action_;
 #endif
diff --git a/components/omnibox/browser/actions/omnibox_action_in_suggest_unittest.cc b/components/omnibox/browser/actions/omnibox_action_in_suggest_unittest.cc
index facb364..7129215 100644
--- a/components/omnibox/browser/actions/omnibox_action_in_suggest_unittest.cc
+++ b/components/omnibox/browser/actions/omnibox_action_in_suggest_unittest.cc
@@ -95,8 +95,8 @@
     ActionInfo action_info;
     action_info.set_action_type(test_case.action_type);
 
-    auto action =
-        base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info));
+    auto action = base::MakeRefCounted<OmniboxActionInSuggest>(
+        std::move(action_info), absl::nullopt);
     EXPECT_EQ(OmniboxActionId::ACTION_IN_SUGGEST, action->ActionId())
         << "while evaluatin action " << ToString(test_case.action_type);
     EXPECT_EQ(test_case.action_type, action->Type());
@@ -128,7 +128,8 @@
     action_info.set_action_type(test_case);
 
     scoped_refptr<OmniboxAction> upcasted_action =
-        base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info));
+        base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info),
+                                                     absl::nullopt);
 
     auto* downcasted_action =
         OmniboxActionInSuggest::FromAction(upcasted_action.get());
@@ -162,8 +163,8 @@
       action_info.set_action_type(ActionType(type));
 
       // This is a valid action type. Object MUST build.
-      auto action =
-          base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info));
+      auto action = base::MakeRefCounted<OmniboxActionInSuggest>(
+          std::move(action_info), absl::nullopt);
       // This is a valid action type. Object MUST be able to report metrics.
       {
         base::HistogramTester histograms;
@@ -208,7 +209,8 @@
     ActionInfo action_info;
     action_info.set_action_type(test_case.first);
     scoped_refptr<OmniboxAction> action =
-        base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info));
+        base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info),
+                                                     absl::nullopt);
 
     {
       // Just show.
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
index 032d496..5d8d86cc 100644
--- a/components/omnibox/browser/autocomplete_controller.cc
+++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -40,6 +40,7 @@
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "components/history_clusters/core/config.h"
+#include "components/omnibox/browser/actions/omnibox_action_in_suggest.h"
 #include "components/omnibox/browser/actions/omnibox_pedal_provider.h"
 #include "components/omnibox/browser/autocomplete_input.h"
 #include "components/omnibox/browser/autocomplete_match_type.h"
@@ -797,18 +798,27 @@
 void AutocompleteController::SetMatchDestinationURL(
     AutocompleteMatch* match) const {
   TRACE_EVENT0("omnibox", "AutocompleteController::SetMatchDestinationURL");
-  const TemplateURL* template_url =
-      match->GetTemplateURL(template_url_service_, false);
-  if (!template_url)
-    return;
-
-  match->destination_url = GURL(template_url->url_ref().ReplaceSearchTerms(
-      *match->search_terms_args, template_url_service_->search_terms_data()));
+  auto url = ComputeURLFromSearchTermsArgs(
+      match->GetTemplateURL(template_url_service_, false),
+      *match->search_terms_args);
+  if (url.is_valid()) {
+    match->destination_url = std::move(url);
+  }
 #if BUILDFLAG(IS_ANDROID)
   match->UpdateJavaDestinationUrl();
 #endif
 }
 
+GURL AutocompleteController::ComputeURLFromSearchTermsArgs(
+    TemplateURL* template_url,
+    const TemplateURLRef::SearchTermsArgs& search_terms_args) const {
+  if (!template_url) {
+    return GURL::EmptyGURL();
+  }
+  return GURL(template_url->url_ref().ReplaceSearchTerms(
+      search_terms_args, template_url_service_->search_terms_data()));
+}
+
 const AutocompleteResult& AutocompleteController::result() const {
   return DebouncingEnabled() ? published_result_ : result_;
 }
@@ -1342,6 +1352,32 @@
     }
     match->search_terms_args->assisted_query_stats = base::StringPrintf(
         "chrome.%s.%s", selected_index.c_str(), autocompletions.c_str());
+
+    // Duplicate AQS/SBS for eligible ActionsInSuggest.
+    // TODO(1418077): rather than computing the `action_uri`, keep the
+    // updated search_terms_args, and apply the query formulation time the
+    // moment the action is selected.
+    for (auto& scoped_action : match->actions) {
+      auto* action_in_suggest =
+          OmniboxActionInSuggest::FromAction(scoped_action.get());
+
+      if (action_in_suggest == nullptr ||
+          !action_in_suggest->search_terms_args.has_value()) {
+        continue;
+      }
+      auto& search_terms_args = action_in_suggest->search_terms_args.value();
+      search_terms_args.searchbox_stats.mutable_assisted_query_info()
+          ->MergeFrom(
+              match->search_terms_args->searchbox_stats.assisted_query_info());
+      search_terms_args.assisted_query_stats =
+          match->search_terms_args->assisted_query_stats;
+
+      action_in_suggest->action_info.set_action_uri(
+          ComputeURLFromSearchTermsArgs(
+              match->GetTemplateURL(template_url_service_, false),
+              search_terms_args)
+              .spec());
+    }
   }
 }
 
diff --git a/components/omnibox/browser/autocomplete_controller.h b/components/omnibox/browser/autocomplete_controller.h
index 987a3d2..70c1fa7 100644
--- a/components/omnibox/browser/autocomplete_controller.h
+++ b/components/omnibox/browser/autocomplete_controller.h
@@ -396,6 +396,13 @@
   // `OnUrlScoringModelDone()` and its completion callback from being called.
   void CancelUrlScoringModel();
 
+  // Constructs a destination URL from supplied search terms args.
+  // TODO(1418077): look for a way to dissolve this function into direct
+  // application where it's needed.
+  GURL ComputeURLFromSearchTermsArgs(
+      TemplateURL* template_url,
+      const TemplateURLRef::SearchTermsArgs& args) const;
+
   base::ObserverList<Observer> observers_;
 
   // The client passed to the providers.
diff --git a/components/omnibox/browser/autocomplete_match_unittest.cc b/components/omnibox/browser/autocomplete_match_unittest.cc
index f6ab72f..c5bc08e 100644
--- a/components/omnibox/browser/autocomplete_match_unittest.cc
+++ b/components/omnibox/browser/autocomplete_match_unittest.cc
@@ -1223,8 +1223,8 @@
     for (auto& action_type : test_case.types_to_add) {
       omnibox::ActionInfo info;
       info.set_action_type(action_type);
-      match.actions.push_back(
-          base::MakeRefCounted<OmniboxActionInSuggest>(std::move(info)));
+      match.actions.push_back(base::MakeRefCounted<OmniboxActionInSuggest>(
+          std::move(info), absl::nullopt));
     }
 
     match.FilterAndSortActionsInSuggest();
diff --git a/components/omnibox/browser/autocomplete_result_unittest.cc b/components/omnibox/browser/autocomplete_result_unittest.cc
index eef8467..a13e2df 100644
--- a/components/omnibox/browser/autocomplete_result_unittest.cc
+++ b/components/omnibox/browser/autocomplete_result_unittest.cc
@@ -3141,8 +3141,8 @@
         if (action_id == OmniboxActionId::ACTION_IN_SUGGEST) {
           omnibox::ActionInfo info;
           info.set_action_type(omnibox::ActionInfo_ActionType_DIRECTIONS);
-          match.actions.push_back(
-              base::MakeRefCounted<OmniboxActionInSuggest>(std::move(info)));
+          match.actions.push_back(base::MakeRefCounted<OmniboxActionInSuggest>(
+              std::move(info), absl::nullopt));
         } else {
           match.actions.push_back(
               base::MakeRefCounted<FakeOmniboxAction>(action_id));
diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc
index 13f59ffc..39564ff 100644
--- a/components/omnibox/browser/base_search_provider.cc
+++ b/components/omnibox/browser/base_search_provider.cc
@@ -213,12 +213,13 @@
     const TemplateURLRef& search_url,
     const TemplateURLRef::SearchTermsArgs& original_search_terms_args,
     const SearchTermsData& search_terms_data) {
+  absl::optional<TemplateURLRef::SearchTermsArgs> action_search_terms_args;
   // If the Action's URL is empty, but the Action supplies additional search
   // parameters, compute new URL based on the base URL (that is specific to
   // the entire suggestion).
   if (action_info.action_uri().empty() &&
       !action_info.search_parameters().empty()) {
-    auto action_search_terms_args = original_search_terms_args;
+    action_search_terms_args = original_search_terms_args;
     std::string query_params;
     for (const auto& param : action_info.search_parameters()) {
       // Supply additional Query Parameters as instructed by the provider.
@@ -227,14 +228,11 @@
       }
       query_params += param.first + "=" + param.second;
     }
-    action_search_terms_args.additional_query_params = query_params;
-    action_info.set_action_uri(
-        GURL(search_url.ReplaceSearchTerms(action_search_terms_args,
-                                           search_terms_data))
-            .spec());
+    action_search_terms_args->additional_query_params = query_params;
   }
 
-  return base::MakeRefCounted<OmniboxActionInSuggest>(std::move(action_info));
+  return base::MakeRefCounted<OmniboxActionInSuggest>(
+      std::move(action_info), std::move(action_search_terms_args));
 }
 
 // static
diff --git a/components/omnibox/browser/base_search_provider_unittest.cc b/components/omnibox/browser/base_search_provider_unittest.cc
index 5d5a8f8..77e816de 100644
--- a/components/omnibox/browser/base_search_provider_unittest.cc
+++ b/components/omnibox/browser/base_search_provider_unittest.cc
@@ -514,87 +514,36 @@
     const char* base_url;
     const char* action_url;
     std::vector<std::pair<const char*, const char*>> search_params;
-
     // query params order is not guaranteed to be the same across all platforms
-    // or even across multiple runs.
-    const char* expected_start_url;
-    std::vector<const char*> expect_query_param;
-    const char* expected_end_url;
+    // or even across multiple runs. the vector below captures possible
+    // variants.
+    std::vector<const char*> expect_query_params;
   } test_cases[]{
       // clang-format off
     // Cases explicitly not meant to produce any changes.
     { "no change: no supplied url, no search params",
       "https://www.google.com",
       // ActionInfo action_uri and search_params:
-      "", {},
-      // Resulting action_uri: head, params, tail:
-      "", {}, ""},
+      "", {}, {}},
 
     { "no change: supplied url, no search params",
       "https://www.google.com",
       // ActionInfo action_uri and search_params:
-      "https://maps.google.com", {},
-      // Resulting action_uri: head, params, tail:
-      "https://maps.google.com", {}, ""},
-
-    { "no change: supplied url, search params ignored",
-      "https://www.google.com",
-      // ActionInfo action_uri and search_params:
-      "https://maps.google.com", {{"a", "3"}},
-      // Resulting action_uri: head, params, tail:
-      "https://maps.google.com", {}, ""},
-
-    { "no change: uri is serialized data",
-      "https://g.co:119/search?q=a#f",
-      // ActionInfo action_uri and search_params:
-      "fce2", {{"a", "3"}, {"b", "7"}},
-      // Resulting action_uri: head, params, tail:
-      "fce2", {}, ""},
+      "https://maps.google.com", {}, {}},
 
     // Cases meant to generate new URL:
     // - action_uri has to be empty,
     // - search_params have to be non-empty.
-    { "generate: domain only; single query param",
+    { "generate: single query param",
       "https://g.co",
       // ActionInfo action_uri and search_params:
-      "", {{"a", "3"}},
-      // Resulting action_uri: head, params, tail:
-      "https://g.co/?", {"a=3"}, ""},
+      "", {{"a", "3"}}, {"a=3"}},
 
-    { "generate: domain and path; single query param",
-      "https://g.co/search",
-      // ActionInfo action_uri and search_params:
-      "", {{"a", "3"}},
-      // Resulting action_uri: head, params, tail:
-      "https://g.co/search?", {"a=3"}, ""},
-
-    { "generate: domain, path, query; single query param",
-      "https://g.co/search?q=abc&oq=def",
-      // ActionInfo action_uri and search_params:
-      "", {{"a", "3"}},
-      // Resulting action_uri: head, params, tail:
-      "https://g.co/search?", {"a=3", "q=abc", "oq=def"}, ""},
-
-    { "generate: domain, path, query, fragment; single query param",
-      "https://g.co/search?q=abc&oq=def#fragment",
-      // ActionInfo action_uri and search_params:
-      "", {{"a", "3"}},
-      // Resulting action_uri: head, params, tail:
-      "https://g.co/search?", {"a=3", "q=abc", "oq=def"}, "#fragment"},
-
-    { "generate: domain, port, path, query, fragment; single query param",
-      "https://g.co:119/search?q=abc&oq=def#fragment",
-      // ActionInfo action_uri and search_params:
-      "", {{"a", "3"}},
-      // Resulting action_uri: head, params, tail:
-      "https://g.co:119/search?", {"a=3", "q=abc", "oq=def"}, "#fragment"},
-
-    { "generate: domain, port, path, query, fragment; multiple params",
+    { "generate: multiple query params",
       "https://g.co:119/search?q=a#f",
       // ActionInfo action_uri and search_params:
-      "", {{"a", "3"}, {"aa", "7"}},
-      // Resulting action_uri: head, params, tail:
-      "https://g.co:119/search?", {"a=3", "aa=7", "q=a"}, "#f"},
+      "", {{"a", "3"}, {"A", "7"}},
+        {"A=7&a=3", "a=3&A=7"}},
       // clang-format on
   };
 
@@ -619,17 +568,21 @@
 
     auto* action_in_suggest = OmniboxActionInSuggest::FromAction(action.get());
 
-    const auto& action_uri = action_in_suggest->action_info_.action_uri();
-
-    EXPECT_THAT(action_uri, testing::StartsWith(test_case.expected_start_url))
+    // order of elements in ProtobufMap is not guaranteed, and in fact changes,
+    // even within the same platform. Instead of trying to decompose the params
+    // just check the params against variants that we specified in the
+    // expect_query_params.
+    EXPECT_EQ(action_in_suggest->search_terms_args.has_value(),
+              !test_case.expect_query_params.empty())
         << "while evaluating case `" << test_case.test_name << '`';
 
-    EXPECT_THAT(action_uri, testing::EndsWith(test_case.expected_end_url))
-        << "while evaluating case `" << test_case.test_name << '`';
-
-    for (auto* query_param : test_case.expect_query_param) {
-      EXPECT_THAT(action_uri, testing::HasSubstr(query_param))
-          << "while evaluating case `" << test_case.test_name << '`';
+    bool found_matching_param_sequence = test_case.expect_query_params.empty();
+    for (auto* param_sequence : test_case.expect_query_params) {
+      found_matching_param_sequence |=
+          action_in_suggest->search_terms_args->additional_query_params ==
+          param_sequence;
     }
+    EXPECT_TRUE(found_matching_param_sequence)
+        << "while evaluating case `" << test_case.test_name << '`';
   }
 }
diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc
index 613289d..a52313e 100644
--- a/components/omnibox/common/omnibox_features.cc
+++ b/components/omnibox/common/omnibox_features.cc
@@ -334,7 +334,7 @@
 // Feature used to enable Pedals in the NTP Realbox.
 BASE_FEATURE(kNtpRealboxPedals,
              "NtpRealboxPedals",
-             base::FEATURE_ENABLED_BY_DEFAULT);
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
 // Feature used to enable URL suggestions for inputs that may contain typos.
 BASE_FEATURE(kOmniboxFuzzyUrlSuggestions,
diff --git a/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc b/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc
index 9d6e2b81..2a9737ca 100644
--- a/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc
+++ b/components/page_load_metrics/browser/observers/use_counter/ukm_features.cc
@@ -291,6 +291,7 @@
            WebFeature::kServiceWorkerBypassFetchHandlerForMainResource,
            WebFeature::
                kServiceWorkerBypassFetchHandlerForMainResourceByOriginTrial,
-           WebFeature::kCascadedCSSZoomNotEqualToOne}));
+           WebFeature::kCascadedCSSZoomNotEqualToOne,
+           WebFeature::kV8Window_QueryLocalFonts_Method}));
   return *opt_in_features;
 }
diff --git a/components/password_manager/core/browser/login_database.cc b/components/password_manager/core/browser/login_database.cc
index 50fe061d..6b2e8f9 100644
--- a/components/password_manager/core/browser/login_database.cc
+++ b/components/password_manager/core/browser/login_database.cc
@@ -62,7 +62,7 @@
 namespace password_manager {
 
 // The current version number of the login database schema.
-constexpr int kCurrentVersionNumber = 34;
+constexpr int kCurrentVersionNumber = 35;
 // The oldest version of the schema such that a legacy Chrome client using that
 // version can still read/write the current database.
 constexpr int kCompatibleVersionNumber = 33;
@@ -207,6 +207,8 @@
   raw_ptr<SQLTableBuilder> password_notes;
   raw_ptr<SQLTableBuilder> passwords_sync_entities_metadata;
   raw_ptr<SQLTableBuilder> passwords_sync_model_metadata;
+  raw_ptr<SQLTableBuilder> incoming_sharing_invitation_sync_entities_metadata;
+  raw_ptr<SQLTableBuilder> incoming_sharing_invitation_sync_model_metadata;
 };
 
 base::span<const uint8_t> PickleToSpan(const base::Pickle& pickle) {
@@ -305,18 +307,30 @@
 constexpr char kPasswordsSyncEntitiesMetadataTableName[] =
     "sync_entities_metadata";
 
+constexpr char kIncomingSharingInvitationSyncModelMetadataTableName[] =
+    "incoming_sharing_invitation_sync_model_metadata";
+constexpr char kIncomingSharingInvitationSyncEntitiesMetadataTableName[] =
+    "incoming_sharing_invitation_sync_entities_metadata";
+
 const char* SyncModelMetadataTableName(syncer::ModelType model_type) {
-  CHECK_EQ(model_type, syncer::PASSWORDS);
-  return kPasswordsSyncModelMetadataTableName;
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
+  return model_type == syncer::PASSWORDS
+             ? kPasswordsSyncModelMetadataTableName
+             : kIncomingSharingInvitationSyncModelMetadataTableName;
 }
 
 const char* SyncEntitiesMetadataTableName(syncer::ModelType model_type) {
-  CHECK_EQ(model_type, syncer::PASSWORDS);
-  return kPasswordsSyncEntitiesMetadataTableName;
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
+  return model_type == syncer::PASSWORDS
+             ? kPasswordsSyncEntitiesMetadataTableName
+             : kIncomingSharingInvitationSyncEntitiesMetadataTableName;
 }
 
 bool ClearAllSyncMetadata(sql::Database* db, syncer::ModelType model_type) {
-  CHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
   sql::Statement s1(db->GetCachedStatement(
       SQL_FROM_HERE, base::StringPrintf("DELETE FROM %s",
                                         SyncModelMetadataTableName(model_type))
@@ -352,6 +366,17 @@
   unsigned passwords_sync_model_metadata_version =
       builders.passwords_sync_model_metadata->SealVersion();
   DCHECK_EQ(expected_version, passwords_sync_model_metadata_version);
+
+  unsigned incoming_sharing_invitation_sync_entities_metadata_version =
+      builders.incoming_sharing_invitation_sync_entities_metadata
+          ->SealVersion();
+  CHECK_EQ(expected_version,
+           incoming_sharing_invitation_sync_entities_metadata_version);
+
+  unsigned incoming_sharing_invitation_sync_model_metadata_version =
+      builders.incoming_sharing_invitation_sync_model_metadata->SealVersion();
+  CHECK_EQ(expected_version,
+           incoming_sharing_invitation_sync_model_metadata_version);
 }
 
 // Teaches |builders| about the different DB schemes in different versions.
@@ -525,6 +550,17 @@
                                            "INTEGER NOT NULL DEFAULT 0");
   SealVersion(builders, /*expected_version=*/34u);
 
+  // Version 35.
+  builders.incoming_sharing_invitation_sync_entities_metadata
+      ->AddPrimaryKeyColumn("storage_key");
+  builders.incoming_sharing_invitation_sync_entities_metadata->AddColumn(
+      "metadata", "VARCHAR NOT NULL");
+  builders.incoming_sharing_invitation_sync_model_metadata->AddPrimaryKeyColumn(
+      "id");
+  builders.incoming_sharing_invitation_sync_model_metadata->AddColumn(
+      "model_metadata", "VARCHAR NOT NULL");
+  SealVersion(builders, /*expected_version=*/35u);
+
   DCHECK_EQ(static_cast<size_t>(COLUMN_NUM), builders.logins->NumberOfColumns())
       << "Adjust LoginDatabaseTableColumns if you change column definitions "
          "here.";
@@ -691,6 +727,16 @@
     return false;
   }
 
+  if (!builders.incoming_sharing_invitation_sync_entities_metadata->MigrateFrom(
+          current_version, db)) {
+    return false;
+  }
+
+  if (!builders.incoming_sharing_invitation_sync_model_metadata->MigrateFrom(
+          current_version, db)) {
+    return false;
+  }
+
   // Data changes, not covered by the schema migration above.
   if (current_version <= 8) {
     sql::Statement fix_time_format;
@@ -888,10 +934,18 @@
       kPasswordsSyncEntitiesMetadataTableName);
   SQLTableBuilder passwords_sync_model_metadata_builder(
       kPasswordsSyncModelMetadataTableName);
-  SQLTableBuilders builders = {&logins_builder, &insecure_credentials_builder,
-                               &password_notes_builder,
-                               &passwords_sync_entities_metadata_builder,
-                               &passwords_sync_model_metadata_builder};
+  SQLTableBuilder incoming_sharing_invitation_sync_entities_metadata_builder(
+      kIncomingSharingInvitationSyncEntitiesMetadataTableName);
+  SQLTableBuilder incoming_sharing_invitation_sync_model_metadata_builder(
+      kIncomingSharingInvitationSyncModelMetadataTableName);
+  SQLTableBuilders builders = {
+      &logins_builder,
+      &insecure_credentials_builder,
+      &password_notes_builder,
+      &passwords_sync_entities_metadata_builder,
+      &passwords_sync_model_metadata_builder,
+      &incoming_sharing_invitation_sync_entities_metadata_builder,
+      &incoming_sharing_invitation_sync_model_metadata_builder};
   InitializeBuilders(builders);
   InitializeStatementStrings(logins_builder);
 
@@ -921,6 +975,23 @@
   password_notes_table_.Init(&db_);
   field_info_table_.Init(&db_);
 
+  if (!incoming_sharing_invitation_sync_entities_metadata_builder.CreateTable(
+          &db_)) {
+    LOG(ERROR) << "Failed to create the "
+                  "'incoming_sharing_invitation_sync_entities_metadata' table";
+    transaction.Rollback();
+    db_.Close();
+    return false;
+  }
+
+  if (!incoming_sharing_invitation_sync_model_metadata_builder.CreateTable(
+          &db_)) {
+    LOG(ERROR) << "Failed to create the "
+                  "'incoming_sharing_invitation_sync_model_metadata' table";
+    transaction.Rollback();
+    db_.Close();
+    return false;
+  }
   int current_version = meta_table_.GetVersionNumber();
   bool migration_success = FixVersionIfNeeded(&db_, &current_version);
 
@@ -1720,7 +1791,8 @@
 std::unique_ptr<syncer::MetadataBatch>
 LoginDatabase::SyncMetadataStore::GetAllSyncEntityMetadata(
     syncer::ModelType model_type) {
-  CHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
   auto metadata_batch = std::make_unique<syncer::MetadataBatch>();
   sql::Statement s(db_->GetCachedStatement(
       SQL_FROM_HERE,
@@ -1758,7 +1830,8 @@
 std::unique_ptr<sync_pb::ModelTypeState>
 LoginDatabase::SyncMetadataStore::GetModelTypeState(
     syncer::ModelType model_type) {
-  CHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
   auto state = std::make_unique<sync_pb::ModelTypeState>();
   sql::Statement s(db_->GetCachedStatement(
       SQL_FROM_HERE,
@@ -1785,7 +1858,8 @@
 LoginDatabase::SyncMetadataStore::GetAllSyncMetadata(
     syncer::ModelType model_type) {
   TRACE_EVENT0("passwords", "SyncMetadataStore::GetAllSyncMetadata");
-  CHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
   std::unique_ptr<syncer::MetadataBatch> metadata_batch =
       GetAllSyncEntityMetadata(model_type);
   if (metadata_batch == nullptr) {
@@ -1805,9 +1879,15 @@
 void LoginDatabase::SyncMetadataStore::DeleteAllSyncMetadata(
     syncer::ModelType model_type) {
   TRACE_EVENT0("passwords", "SyncMetadataStore::DeleteAllSyncMetadata");
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
+  if (model_type != syncer::PASSWORDS) {
+    ClearAllSyncMetadata(db_, model_type);
+    return;
+  }
   CHECK_EQ(model_type, syncer::PASSWORDS);
   bool had_unsynced_password_deletions = HasUnsyncedPasswordDeletions();
-  ClearAllSyncMetadata(db_, model_type);
+  ClearAllSyncMetadata(db_, syncer::PASSWORDS);
   if (had_unsynced_password_deletions &&
       password_deletions_have_synced_callback_) {
     // Note: At this point we can't be fully sure whether the deletions actually
@@ -1823,7 +1903,8 @@
     const std::string& storage_key,
     const sync_pb::EntityMetadata& metadata) {
   TRACE_EVENT0("passwords", "SyncMetadataStore::UpdateSyncMetadata");
-  DCHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
 
   int storage_key_int = 0;
   if (!base::StringToInt(storage_key, &storage_key_int)) {
@@ -1848,7 +1929,10 @@
 
   s.BindInt(0, storage_key_int);
   s.BindString(1, encrypted_metadata);
-
+  if (model_type != syncer::PASSWORDS) {
+    return s.Run();
+  }
+  CHECK_EQ(model_type, syncer::PASSWORDS);
   bool had_unsynced_deletions = HasUnsyncedPasswordDeletions();
   bool result = s.Run();
   if (result && had_unsynced_deletions && !HasUnsyncedPasswordDeletions() &&
@@ -1862,7 +1946,8 @@
     syncer::ModelType model_type,
     const std::string& storage_key) {
   TRACE_EVENT0("passwords", "SyncMetadataStore::ClearSyncMetadata");
-  DCHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
 
   int storage_key_int = 0;
   if (!base::StringToInt(storage_key, &storage_key_int)) {
@@ -1877,7 +1962,10 @@
                          SyncEntitiesMetadataTableName(model_type))
           .c_str()));
   s.BindInt(0, storage_key_int);
-
+  if (model_type != syncer::PASSWORDS) {
+    return s.Run();
+  }
+  CHECK_EQ(model_type, syncer::PASSWORDS);
   bool had_unsynced_deletions = HasUnsyncedPasswordDeletions();
   bool result = s.Run();
   if (result && had_unsynced_deletions && !HasUnsyncedPasswordDeletions() &&
@@ -1891,7 +1979,8 @@
     syncer::ModelType model_type,
     const sync_pb::ModelTypeState& model_type_state) {
   TRACE_EVENT0("passwords", "SyncMetadataStore::UpdateModelTypeState");
-  DCHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
 
   // Make sure only one row is left by storing it in the entry with id=1
   // every time.
@@ -1909,7 +1998,8 @@
 bool LoginDatabase::SyncMetadataStore::ClearModelTypeState(
     syncer::ModelType model_type) {
   TRACE_EVENT0("passwords", "SyncMetadataStore::ClearModelTypeState");
-  DCHECK_EQ(model_type, syncer::PASSWORDS);
+  CHECK(model_type == syncer::PASSWORDS ||
+        model_type == syncer::INCOMING_PASSWORD_SHARING_INVITATION);
 
   sql::Statement s(db_->GetCachedStatement(
       SQL_FROM_HERE, base::StringPrintf("DELETE FROM %s WHERE id=1",
diff --git a/components/password_manager/core/browser/login_database_unittest.cc b/components/password_manager/core/browser/login_database_unittest.cc
index 8557059..03903b4 100644
--- a/components/password_manager/core/browser/login_database_unittest.cc
+++ b/components/password_manager/core/browser/login_database_unittest.cc
@@ -1625,16 +1625,23 @@
       "PasswordManager.AccountStore.InaccessiblePasswords3", 0, 1);
 }
 
-TEST_F(LoginDatabaseTest, NoMetadata) {
+class LoginDatabaseSyncMetadataTest
+    : public LoginDatabaseTest,
+      public testing::WithParamInterface<syncer::ModelType> {
+ public:
+  syncer::ModelType SyncModelType() { return GetParam(); }
+};
+
+TEST_P(LoginDatabaseSyncMetadataTest, NoMetadata) {
   std::unique_ptr<syncer::MetadataBatch> metadata_batch =
-      db().password_sync_metadata_store().GetAllSyncMetadata(syncer::PASSWORDS);
+      db().password_sync_metadata_store().GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(metadata_batch, testing::NotNull());
   EXPECT_EQ(0u, metadata_batch->TakeAllMetadata().size());
   EXPECT_EQ(sync_pb::ModelTypeState().SerializeAsString(),
             metadata_batch->GetModelTypeState().SerializeAsString());
 }
 
-TEST_F(LoginDatabaseTest, GetAllSyncMetadata) {
+TEST_P(LoginDatabaseSyncMetadataTest, GetAllSyncMetadata) {
   sync_pb::EntityMetadata metadata;
   PasswordStoreSync::MetadataStore& password_sync_metadata_store =
       db().password_sync_metadata_store();
@@ -1644,21 +1651,21 @@
   metadata.set_sequence_number(1);
 
   EXPECT_TRUE(password_sync_metadata_store.UpdateEntityMetadata(
-      syncer::PASSWORDS, kStorageKey1, metadata));
+      SyncModelType(), kStorageKey1, metadata));
 
   sync_pb::ModelTypeState model_type_state;
   model_type_state.set_initial_sync_state(
       sync_pb::ModelTypeState_InitialSyncState_INITIAL_SYNC_DONE);
 
   EXPECT_TRUE(password_sync_metadata_store.UpdateModelTypeState(
-      syncer::PASSWORDS, model_type_state));
+      SyncModelType(), model_type_state));
 
   metadata.set_sequence_number(2);
   EXPECT_TRUE(password_sync_metadata_store.UpdateEntityMetadata(
-      syncer::PASSWORDS, kStorageKey2, metadata));
+      SyncModelType(), kStorageKey2, metadata));
 
   std::unique_ptr<syncer::MetadataBatch> metadata_batch =
-      password_sync_metadata_store.GetAllSyncMetadata(syncer::PASSWORDS);
+      password_sync_metadata_store.GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(metadata_batch, testing::NotNull());
 
   EXPECT_EQ(metadata_batch->GetModelTypeState().initial_sync_state(),
@@ -1675,17 +1682,17 @@
   model_type_state.set_initial_sync_state(
       sync_pb::ModelTypeState_InitialSyncState_INITIAL_SYNC_STATE_UNSPECIFIED);
   EXPECT_TRUE(password_sync_metadata_store.UpdateModelTypeState(
-      syncer::PASSWORDS, model_type_state));
+      SyncModelType(), model_type_state));
 
   metadata_batch =
-      password_sync_metadata_store.GetAllSyncMetadata(syncer::PASSWORDS);
+      password_sync_metadata_store.GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(metadata_batch, testing::NotNull());
   EXPECT_EQ(
       metadata_batch->GetModelTypeState().initial_sync_state(),
       sync_pb::ModelTypeState_InitialSyncState_INITIAL_SYNC_STATE_UNSPECIFIED);
 }
 
-TEST_F(LoginDatabaseTest, DeleteAllSyncMetadata) {
+TEST_P(LoginDatabaseSyncMetadataTest, DeleteAllSyncMetadata) {
   sync_pb::EntityMetadata metadata;
   PasswordStoreSync::MetadataStore& password_sync_metadata_store =
       db().password_sync_metadata_store();
@@ -1695,33 +1702,33 @@
   metadata.set_sequence_number(1);
 
   EXPECT_TRUE(password_sync_metadata_store.UpdateEntityMetadata(
-      syncer::PASSWORDS, kStorageKey1, metadata));
+      SyncModelType(), kStorageKey1, metadata));
 
   sync_pb::ModelTypeState model_type_state;
   model_type_state.set_initial_sync_state(
       sync_pb::ModelTypeState_InitialSyncState_INITIAL_SYNC_DONE);
 
   EXPECT_TRUE(password_sync_metadata_store.UpdateModelTypeState(
-      syncer::PASSWORDS, model_type_state));
+      SyncModelType(), model_type_state));
 
   metadata.set_sequence_number(2);
   EXPECT_TRUE(password_sync_metadata_store.UpdateEntityMetadata(
-      syncer::PASSWORDS, kStorageKey2, metadata));
+      SyncModelType(), kStorageKey2, metadata));
 
   std::unique_ptr<syncer::MetadataBatch> metadata_batch =
-      password_sync_metadata_store.GetAllSyncMetadata(syncer::PASSWORDS);
+      password_sync_metadata_store.GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(metadata_batch, testing::NotNull());
   ASSERT_EQ(metadata_batch->TakeAllMetadata().size(), 2u);
 
-  password_sync_metadata_store.DeleteAllSyncMetadata(syncer::PASSWORDS);
+  password_sync_metadata_store.DeleteAllSyncMetadata(SyncModelType());
 
   std::unique_ptr<syncer::MetadataBatch> empty_metadata_batch =
-      password_sync_metadata_store.GetAllSyncMetadata(syncer::PASSWORDS);
+      password_sync_metadata_store.GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(empty_metadata_batch, testing::NotNull());
   EXPECT_EQ(empty_metadata_batch->TakeAllMetadata().size(), 0u);
 }
 
-TEST_F(LoginDatabaseTest, WriteThenDeleteSyncMetadata) {
+TEST_P(LoginDatabaseSyncMetadataTest, WriteThenDeleteSyncMetadata) {
   sync_pb::EntityMetadata metadata;
   PasswordStoreSync::MetadataStore& password_sync_metadata_store =
       db().password_sync_metadata_store();
@@ -1735,15 +1742,15 @@
 
   // Write the data into the store.
   EXPECT_TRUE(password_sync_metadata_store.UpdateEntityMetadata(
-      syncer::PASSWORDS, kStorageKey, metadata));
+      SyncModelType(), kStorageKey, metadata));
   EXPECT_TRUE(password_sync_metadata_store.UpdateModelTypeState(
-      syncer::PASSWORDS, model_type_state));
+      SyncModelType(), model_type_state));
   // Delete the data we just wrote.
-  EXPECT_TRUE(password_sync_metadata_store.ClearEntityMetadata(
-      syncer::PASSWORDS, kStorageKey));
+  EXPECT_TRUE(password_sync_metadata_store.ClearEntityMetadata(SyncModelType(),
+                                                               kStorageKey));
 
   std::unique_ptr<syncer::MetadataBatch> metadata_batch =
-      password_sync_metadata_store.GetAllSyncMetadata(syncer::PASSWORDS);
+      password_sync_metadata_store.GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(metadata_batch, testing::NotNull());
 
   // It shouldn't be there any more.
@@ -1753,15 +1760,21 @@
 
   // Now delete the model type state.
   EXPECT_TRUE(
-      password_sync_metadata_store.ClearModelTypeState(syncer::PASSWORDS));
+      password_sync_metadata_store.ClearModelTypeState(SyncModelType()));
   metadata_batch =
-      password_sync_metadata_store.GetAllSyncMetadata(syncer::PASSWORDS);
+      password_sync_metadata_store.GetAllSyncMetadata(SyncModelType());
   ASSERT_THAT(metadata_batch, testing::NotNull());
 
   EXPECT_EQ(sync_pb::ModelTypeState().SerializeAsString(),
             metadata_batch->GetModelTypeState().SerializeAsString());
 }
 
+INSTANTIATE_TEST_SUITE_P(
+    SyncModelTypes,
+    LoginDatabaseSyncMetadataTest,
+    testing::Values(syncer::PASSWORDS,
+                    syncer::INCOMING_PASSWORD_SHARING_INVITATION));
+
 #if BUILDFLAG(IS_POSIX)
 // Only the current user has permission to read the database.
 //
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
index ef7c190..7dd5e0a 100644
--- a/components/password_manager/core/common/password_manager_features.h
+++ b/components/password_manager/core/common/password_manager_features.h
@@ -111,6 +111,8 @@
   kTrySomethingNew = 3,
   // Adjusts the language focusing on the convenience of use.
   kConvenience = 4,
+  // Adjusts the language of the help text pointing out the benefits.
+  kCrossDevice = 5,
 };
 
 inline constexpr base::FeatureParam<PasswordGenerationVariation>::Option
@@ -119,6 +121,7 @@
         {PasswordGenerationVariation::kSafetyFirst, "safety_first"},
         {PasswordGenerationVariation::kTrySomethingNew, "try_something_new"},
         {PasswordGenerationVariation::kConvenience, "convenience"},
+        {PasswordGenerationVariation::kCrossDevice, "cross_device"},
 };
 
 inline constexpr base::FeatureParam<PasswordGenerationVariation>
diff --git a/components/policy/core/common/BUILD.gn b/components/policy/core/common/BUILD.gn
index e4e80b5..2584346b 100644
--- a/components/policy/core/common/BUILD.gn
+++ b/components/policy/core/common/BUILD.gn
@@ -527,6 +527,7 @@
     "management/management_service_unittest.cc",
     "policy_bundle_unittest.cc",
     "policy_loader_command_line_unittest.cc",
+    "policy_logger_unittest.cc",
     "policy_map_unittest.cc",
     "policy_proto_decoders_unittest.cc",
     "policy_service_impl_unittest.cc",
@@ -596,9 +597,7 @@
   } else {
     sources += [ "async_policy_provider_unittest.cc" ]
   }
-  if (is_android || is_ios) {
-    sources += [ "policy_logger_unittest.cc" ]
-  } else {
+  if (!is_android && !is_ios) {
     sources += [
       "cloud/cloud_external_data_store_unittest.cc",
       "cloud/component_cloud_policy_service_unittest.cc",
diff --git a/components/policy/core/common/cloud/user_cloud_policy_store.cc b/components/policy/core/common/cloud/user_cloud_policy_store.cc
index af3fac0..fd071b1 100644
--- a/components/policy/core/common/cloud/user_cloud_policy_store.cc
+++ b/components/policy/core/common/cloud/user_cloud_policy_store.cc
@@ -17,6 +17,7 @@
 #include "base/sequence_checker.h"
 #include "base/task/sequenced_task_runner.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
+#include "components/policy/core/common/policy_logger.h"
 #include "components/policy/proto/cloud_policy.pb.h"
 #include "components/policy/proto/device_management_backend.pb.h"
 #include "components/policy/proto/policy_signing_key.pb.h"
@@ -205,7 +206,7 @@
       break;
 
     case LOAD_RESULT_NO_POLICY_FILE:
-      DVLOG(1) << "No policy found on disk";
+      DVLOG_POLICY(1, POLICY_FETCHING) << "No cloud policy found on disk";
       NotifyStoreLoaded();
       break;
 
@@ -223,7 +224,8 @@
         // rotation - make sure we request a new key from the server on our
         // next fetch.
         doing_key_rotation = true;
-        DLOG(WARNING) << "Verification key rotation detected";
+        DLOG_POLICY(WARNING, POLICY_FETCHING)
+            << "Verification key rotation detected";
       }
 
       Validate(std::move(cloud_policy), std::move(key), validate_in_background,
@@ -343,7 +345,8 @@
 void DesktopCloudPolicyStore::OnPolicyToStoreValidated(
     UserCloudPolicyValidator* validator) {
   validation_result_ = validator->GetValidationResult();
-  DVLOG(1) << "Policy validation complete: status = " << validator->status();
+  DVLOG_POLICY(1, POLICY_FETCHING)
+      << "Policy validation complete: status = " << validator->status();
   if (!validator->success()) {
     status_ = STATUS_VALIDATION_ERROR;
     NotifyStoreError();
diff --git a/components/policy/core/common/features.cc b/components/policy/core/common/features.cc
index cf0390b..31818c99 100644
--- a/components/policy/core/common/features.cc
+++ b/components/policy/core/common/features.cc
@@ -42,6 +42,12 @@
              base::FEATURE_ENABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_IOS)
 
+#if !BUILDFLAG(IS_IOS) || !BUILDFLAG(IS_ANDROID)
+BASE_FEATURE(kPolicyLogsPageDesktop,
+             "PolicyLogsPageDesktop",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+#endif  // !BUILDFLAG(IS_IOS) || !!BUILDFLAG(IS_ANDROID)
+
 }  // namespace features
 
 }  // namespace policy
diff --git a/components/policy/core/common/features.h b/components/policy/core/common/features.h
index ec09f7f9..3823cbe 100644
--- a/components/policy/core/common/features.h
+++ b/components/policy/core/common/features.h
@@ -44,6 +44,10 @@
 POLICY_EXPORT BASE_DECLARE_FEATURE(kPolicyLogsPageIOS);
 #endif  // BUILDFLAG(IS_IOS)
 
+#if !BUILDFLAG(IS_IOS) || !BUILDFLAG(IS_ANDROID)
+POLICY_EXPORT BASE_DECLARE_FEATURE(kPolicyLogsPageDesktop);
+#endif  // !BUILDFLAG(IS_IOS) || !!BUILDFLAG(IS_ANDROID)
+
 }  // namespace features
 }  // namespace policy
 
diff --git a/components/policy/core/common/policy_logger.cc b/components/policy/core/common/policy_logger.cc
index db32aa3..915178a 100644
--- a/components/policy/core/common/policy_logger.cc
+++ b/components/policy/core/common/policy_logger.cc
@@ -168,7 +168,11 @@
   return log_dict;
 }
 
-PolicyLogger::PolicyLogger() = default;
+PolicyLogger::PolicyLogger() {
+  if (base::SequencedTaskRunner::HasCurrentDefault()) {
+    logging_sequence_ = base::SequencedTaskRunner::GetCurrentDefault();
+  }
+}
 
 PolicyLogger::~PolicyLogger() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(logs_list_sequence_checker_);
@@ -176,6 +180,27 @@
 
 void PolicyLogger::AddLog(PolicyLogger::Log&& new_log) {
   if (IsPolicyLoggingEnabled()) {
+    // Skip logging for tests with no task environments.
+    if (!logging_sequence_) {
+      return;
+    }
+
+    // Add the log from the sequence that created the logger if it is not being
+    // added on the same sequence now.
+    if (logging_sequence_ != base::SequencedTaskRunner::GetCurrentDefault()) {
+      logging_sequence_->PostTask(
+          FROM_HERE,
+          base::BindOnce(&PolicyLogger::AddLogImpl, weak_factory_.GetWeakPtr(),
+                         std::move(new_log)));
+      return;
+    }
+
+    AddLogImpl(std::move(new_log));
+  }
+}
+
+void PolicyLogger::AddLogImpl(PolicyLogger::Log&& new_log) {
+  if (IsPolicyLoggingEnabled()) {
     DCHECK_CALLED_ON_VALID_SEQUENCE(logs_list_sequence_checker_);
     logs_.emplace_back(std::move(new_log));
 
@@ -199,7 +224,7 @@
 }
 
 void PolicyLogger::ScheduleOldLogsDeletion() {
-  base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask(
+  logging_sequence_->PostDelayedTask(
       FROM_HERE,
       base::BindOnce(&PolicyLogger::DeleteOldLogs, weak_factory_.GetWeakPtr()),
       kTimeToLive);
@@ -221,7 +246,14 @@
 #elif BUILDFLAG(IS_IOS)
   return base::FeatureList::IsEnabled(policy::features::kPolicyLogsPageIOS);
 #else
-  return false;
+  // Check that FeatureList is available as a protection against early startup
+  // crashes. Some policy providers are initialized very early even before
+  // base::FeatureList is available, but when policies are finally applied, the
+  // feature stack is fully initialized. The instance check ensures that the
+  // final decision is delayed until all features are initialized, without any
+  // other downstream effect.
+  return base::FeatureList::GetInstance() &&
+         base::FeatureList::IsEnabled(policy::features::kPolicyLogsPageDesktop);
 #endif  // BUILDFLAG(IS_ANDROID)
 }
 
@@ -241,4 +273,7 @@
   is_log_deletion_enabled_ = false;
 }
 
+void PolicyLogger::ResetLoggerTaskRunnerForTest() {
+  logging_sequence_ = base::SequencedTaskRunner::GetCurrentDefault();
+}
 }  // namespace policy
diff --git a/components/policy/core/common/policy_logger.h b/components/policy/core/common/policy_logger.h
index 2886fda..7afee35f6 100644
--- a/components/policy/core/common/policy_logger.h
+++ b/components/policy/core/common/policy_logger.h
@@ -21,7 +21,6 @@
 // messages logged with DLOG are still important to be seen on the
 // chrome://policy/logs page in release mode. The DLOG call in StreamLog() will
 // do the check as usual for command line logging.
-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
 #define LOG_POLICY(log_severity, log_source)                                  \
   LOG_POLICY_##log_severity(::policy::PolicyLogger::LogHelper::LogType::kLog, \
                             log_source)
@@ -50,12 +49,6 @@
   ::policy::PolicyLogger::LogHelper(                           \
       log_type, ::policy::PolicyLogger::Log::Severity::kError, \
       ::policy::PolicyLogger::LogHelper::kNoVerboseLog, log_source, FROM_HERE)
-#else
-#define LOG_POLICY(log_severity, log_source) LOG(log_severity)
-#define DLOG_POLICY(log_severity, log_source) DLOG(log_severity)
-#define VLOG_POLICY(log_verbosity, log_source) VLOG(log_verbosity)
-#define DVLOG_POLICY(log_verbosity, log_source) DVLOG(log_verbosity)
-#endif  // BUILDFLAG(IS_ANDROID)
 
 #define POLICY_AUTH ::policy::PolicyLogger::Log::Source::kAuthentication
 #define POLICY_PROCESSING ::policy::PolicyLogger::Log::Source::kPolicyProcessing
@@ -108,7 +101,7 @@
 
   // Helper class to temporarily hold log information before adding it as a Log
   // object to the logs list when it is destroyed.
-  class LogHelper {
+  class POLICY_EXPORT LogHelper {
    public:
     // Value indicating that the log is not from VLOG, DVLOG, and other verbose
     // log macros.
@@ -171,10 +164,18 @@
   // test.
   void ResetLoggerAfterTest();
 
+  // Resets the sequenced task runner after the task environment changes between
+  // tests in the same test suite.
+  void ResetLoggerTaskRunnerForTest();
+
  private:
+  // Calls `AddLogImpl` or schedules it if called from the wrong sequence to add
+  // the new log to the logs list.
+  void AddLog(Log&& new_log);
+
   // Adds a new log to the logs_ list and calls `ScheduleOldLogsDeletion` if
   // there is no deletion task scheduled.
-  void AddLog(Log&& new_log);
+  void AddLogImpl(Log&& new_log);
 
   // Deletes logs in the list that have been in the list for `kTimeToLive`
   // minutes to an hour.
@@ -195,6 +196,8 @@
 
   std::vector<Log> logs_ GUARDED_BY_CONTEXT(logs_list_sequence_checker_);
 
+  scoped_refptr<base::SequencedTaskRunner> logging_sequence_;
+
   SEQUENCE_CHECKER(logs_list_sequence_checker_);
 
   base::WeakPtrFactory<PolicyLogger> weak_factory_{this};
diff --git a/components/policy/core/common/policy_logger_unittest.cc b/components/policy/core/common/policy_logger_unittest.cc
index a6ffbac..f893260 100644
--- a/components/policy/core/common/policy_logger_unittest.cc
+++ b/components/policy/core/common/policy_logger_unittest.cc
@@ -35,7 +35,11 @@
 #elif BUILDFLAG(IS_IOS)
     scoped_feature_list_.InitWithFeatureState(
         policy::features::kPolicyLogsPageIOS, true);
+#else
+    scoped_feature_list_.InitWithFeatureState(
+        policy::features::kPolicyLogsPageDesktop, true);
 #endif
+    policy::PolicyLogger::GetInstance()->ResetLoggerTaskRunnerForTest();
   }
 
   ~PolicyLoggerTest() override = default;
@@ -108,6 +112,9 @@
 #elif BUILDFLAG(IS_IOS)
   scoped_feature_list_.InitWithFeatureState(
       policy::features::kPolicyLogsPageIOS, false);
+#else
+  scoped_feature_list_.InitWithFeatureState(
+      policy::features::kPolicyLogsPageDesktop, false);
 #endif
 
   PolicyLogger* policy_logger = policy::PolicyLogger::GetInstance();
diff --git a/components/policy/resources/templates/policies.yaml b/components/policy/resources/templates/policies.yaml
index ee50a12..8de85897 100644
--- a/components/policy/resources/templates/policies.yaml
+++ b/components/policy/resources/templates/policies.yaml
@@ -1108,6 +1108,7 @@
   1107: GoogleSearchSidePanelEnabled
   1108: PdfUseSkiaRendererEnabled
   1109: DataUrlInSvgUseEnabled
+  1110: RSAKeyUsageForLocalAnchorsEnabled
 atomic_groups:
   1: Homepage
   2: RemoteAccess
diff --git a/components/policy/resources/templates/policy_definitions/Miscellaneous/RSAKeyUsageForLocalAnchorsEnabled.yaml b/components/policy/resources/templates/policy_definitions/Miscellaneous/RSAKeyUsageForLocalAnchorsEnabled.yaml
new file mode 100644
index 0000000..37494dec
--- /dev/null
+++ b/components/policy/resources/templates/policy_definitions/Miscellaneous/RSAKeyUsageForLocalAnchorsEnabled.yaml
@@ -0,0 +1,60 @@
+caption: Check RSA key usage for server certicates issued by local trust anchors
+default: null
+desc: |-
+  The X.509 key usage extension declares how the key in a certificate may be
+  used. Such instructions ensure certificates are not used in an unintended
+  context, which protects against a class of cross-protocol attacks on HTTPS and
+  other protocols. For this to work, HTTPS clients must check that server
+  certificates match the connection's TLS parameters.
+
+  If this policy is set to enabled,
+  <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will perform this check.
+  This helps prevent attacks where an attacker manipulates the browser into
+  interpreting a key in ways that the certificate owner did not intend.
+
+  If this policy is set to disabled,
+  <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will skip this check in
+  HTTPS connections that both negotiate TLS 1.2 and use an RSA certificate that
+  chains to a local trust anchor. Examples of local trust anchors include
+  policy-provided or user-installed root certificates. In all other cases, the
+  check is performed independent of this policy's setting.
+
+  If the policy is not configured,
+  <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will behave as if the
+  policy is disabled.
+
+  This policy is available for administrators to preview the behavior of a
+  future release, which will enable this check by default. At that point, this
+  policy will remain temporarily available for administrators that need more
+  time to update.
+
+  Connections which fail this check will fail with the error
+  ERR_SSL_KEY_USAGE_INCOMPATIBLE. Sites which fail with this error likely have a
+  misconfigured certificate. Modern ECDHE_RSA cipher suites use the
+  "digitalSignature" key usage option, while legacy RSA decryption cipher suites
+  use the "keyEncipherment" key usage option. If unsure, adminstrators should
+  include both in RSA certificates meant for HTTPS.
+example_value: true
+features:
+  dynamic_refresh: true
+  per_profile: false
+items:
+- caption: Enable RSA key usage checking
+  value: true
+- caption: Disable RSA key usage checking
+  value: false
+- caption: Use the default setting for RSA key usage checking
+  value: null
+owners:
+- davidben@chromium.org
+- trusty-transport@chromium.org
+schema:
+  type: boolean
+supported_on:
+- chrome.*:115-
+- chrome_os:115-
+- android:115-
+- fuchsia:115-
+tags:
+- system-security
+type: main
diff --git a/components/policy/resources/webui/BUILD.gn b/components/policy/resources/webui/BUILD.gn
index d7e644e..3ae86bc 100644
--- a/components/policy/resources/webui/BUILD.gn
+++ b/components/policy/resources/webui/BUILD.gn
@@ -10,12 +10,9 @@
   static_files = [
     "policy.html",
     "policy.css",
+    "logs/policy_logs.html",
   ]
 
-  if (is_android || is_ios) {
-    static_files += [ "logs/policy_logs.html" ]
-  }
-
   # Files holding a Custom element definition AND have an equivalent .html file.
   web_component_files = [
     "policy_conflict.ts",
@@ -28,13 +25,9 @@
   non_web_component_files = [
     "policy_base.ts",
     "policy.ts",
+    "logs/types.ts",
+    "logs/policy_logs.ts",
   ]
-  if (is_android || is_ios) {
-    non_web_component_files += [
-      "logs/types.ts",
-      "logs/policy_logs.ts",
-    ]
-  }
 
   ts_composite = true
   ts_definitions = [ "//tools/typescript/definitions/chrome_send.d.ts" ]
diff --git a/components/policy/test/data/policy_test_cases.json b/components/policy/test/data/policy_test_cases.json
index 933cd970..3b3e0f50 100644
--- a/components/policy/test/data/policy_test_cases.json
+++ b/components/policy/test/data/policy_test_cases.json
@@ -7865,6 +7865,50 @@
       }
     ]
   },
+  "RSAKeyUsageForLocalAnchorsEnabled": {
+    "os": [
+      "win",
+      "linux",
+      "mac",
+      "chromeos_ash",
+      "chromeos_lacros",
+      "android",
+      "fuchsia"
+    ],
+    "policy_pref_mapping_tests": [
+      {
+        "note": "Default value (no policies set).",
+        "prefs": {
+          "ssl.rsa_key_usage_for_local_anchors_enabled": {
+            "default_value": false,
+            "location": "local_state"
+          }
+        }
+      },
+      {
+        "policies": {
+          "RSAKeyUsageForLocalAnchorsEnabled": false
+        },
+        "prefs": {
+          "ssl.rsa_key_usage_for_local_anchors_enabled": {
+            "value": false,
+            "location": "local_state"
+          }
+        }
+      },
+      {
+        "policies": {
+          "RSAKeyUsageForLocalAnchorsEnabled": true
+        },
+        "prefs": {
+          "ssl.rsa_key_usage_for_local_anchors_enabled": {
+            "value": true,
+            "location": "local_state"
+          }
+        }
+      }
+    ]
+  },
   "TripleDESEnabled": {
     "reason_for_missing_test": "Policy was removed"
   },
diff --git a/components/reporting/util/BUILD.gn b/components/reporting/util/BUILD.gn
index d76c2a6..dadbbf6 100644
--- a/components/reporting/util/BUILD.gn
+++ b/components/reporting/util/BUILD.gn
@@ -105,6 +105,18 @@
   ]
 }
 
+source_set("rate_limiter_slide_window") {
+  sources = [
+    "rate_limiter_slide_window.cc",
+    "rate_limiter_slide_window.h",
+  ]
+
+  deps = [
+    ":rate_limiter_interface",
+    "//base",
+  ]
+}
+
 # All unit tests are built as part of the //components:components_unittests
 # target.
 source_set("unit_tests") {
@@ -112,6 +124,7 @@
   sources = [
     "disconnectable_client_unittest.cc",
     "file_unittest.cc",
+    "rate_limiter_slide_window_unittest.cc",
     "refcounted_closure_list_unittest.cc",
     "status_macros_unittest.cc",
     "status_unittest.cc",
@@ -122,6 +135,7 @@
     ":disconnectable_client",
     ":file",
     ":rate_limiter_interface",
+    ":rate_limiter_slide_window",
     ":refcounted_closure_list",
     ":status",
     ":status_macros",
diff --git a/components/reporting/util/rate_limiter_slide_window.cc b/components/reporting/util/rate_limiter_slide_window.cc
new file mode 100644
index 0000000..26313c6
--- /dev/null
+++ b/components/reporting/util/rate_limiter_slide_window.cc
@@ -0,0 +1,91 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/reporting/util/rate_limiter_slide_window.h"
+
+#include <cstddef>
+#include <utility>
+
+#include "base/check.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "base/time/time.h"
+
+namespace reporting {
+
+RateLimiterSlideWindow::RateLimiterSlideWindow(size_t total_size,
+                                               base::TimeDelta time_window,
+                                               size_t bucket_count)
+    : total_size_(total_size),
+      time_bucket_(time_window / bucket_count),
+      bucket_count_(bucket_count),
+      start_timestamp_(base::Time::Min()) {
+  DCHECK_GT(total_size, 0u);
+  DCHECK_GT(time_window, base::TimeDelta());
+  DCHECK_GT(bucket_count, 0u);
+  DETACH_FROM_SEQUENCE(sequence_checker_);
+}
+
+RateLimiterSlideWindow::~RateLimiterSlideWindow() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
+
+void RateLimiterSlideWindow::BucketsShift() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(!bucket_events_size_.empty());
+  const auto now = base::Time::Now();
+  const auto earliest_time = now - bucket_count_ * time_bucket_;
+  // If the earliet bucket is obsolete, drop it.
+  if (start_timestamp_ <= earliest_time) {
+    DCHECK_GE(current_size_, bucket_events_size_.front());
+    current_size_ -= bucket_events_size_.front();
+    bucket_events_size_.pop();
+    start_timestamp_ += time_bucket_;
+  }
+  // If more buckets are there, repeat once the earliest bucket becomes
+  // obsolete.
+  if (!bucket_events_size_.empty()) {
+    base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask(
+        FROM_HERE,
+        base::BindOnce(&RateLimiterSlideWindow::BucketsShift,
+                       weak_ptr_factory_.GetWeakPtr()),
+        time_bucket_);
+  }
+}
+
+bool RateLimiterSlideWindow::Acquire(size_t event_size) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  const auto now = base::Time::Now();
+  // Check whether the new event size fits.
+  if (current_size_ + event_size > total_size_) {
+    return false;  // Too large, cannot add.
+  }
+  // Event size fits in the window.
+  if (bucket_events_size_.empty()) {
+    // Window is empty, populate it with the new event only.
+    bucket_events_size_.push(event_size);
+    current_size_ = event_size;
+    start_timestamp_ = now;
+    // Initiate bucket purging, there are non-empty buckets now.
+    base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask(
+        FROM_HERE,
+        base::BindOnce(&RateLimiterSlideWindow::BucketsShift,
+                       weak_ptr_factory_.GetWeakPtr()),
+        time_bucket_);
+  } else {
+    // Window is not empty, pad it with 0 buckets if necessary.
+    for (auto next_timestamp =
+             start_timestamp_ + bucket_events_size_.size() * time_bucket_;
+         next_timestamp <= now; next_timestamp += time_bucket_) {
+      bucket_events_size_.push(0u);
+    }
+    // Add the new event to the last bucket (which could be empty).
+    DCHECK_LE(bucket_events_size_.size(), bucket_count_);
+    bucket_events_size_.back() += event_size;
+    current_size_ += event_size;
+    // No need to initiate bucket purging - it is already scheduled.
+  }
+  return true;
+}
+}  // namespace reporting
diff --git a/components/reporting/util/rate_limiter_slide_window.h b/components/reporting/util/rate_limiter_slide_window.h
new file mode 100644
index 0000000..03b770a
--- /dev/null
+++ b/components/reporting/util/rate_limiter_slide_window.h
@@ -0,0 +1,71 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_REPORTING_UTIL_RATE_LIMITER_SLIDE_WINDOW_H_
+#define COMPONENTS_REPORTING_UTIL_RATE_LIMITER_SLIDE_WINDOW_H_
+
+#include <cstddef>
+#include <queue>
+
+#include "base/functional/bind.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "base/task/sequenced_task_runner.h"
+#include "base/time/time.h"
+#include "components/reporting/util/rate_limiter_interface.h"
+
+namespace reporting {
+
+// Rate limiter implementation of the bucket slide window algorithm.
+// It limits the total size of the events by `total_size` and tracks them
+// using `bucket_count` buckets comprising `time_window` (thus each bucket
+// tracks a period of `time_window / bucket_count`).
+class RateLimiterSlideWindow : public RateLimiterInterface {
+ public:
+  RateLimiterSlideWindow(size_t total_size,
+                         base::TimeDelta time_window,
+                         size_t bucket_count);
+
+  RateLimiterSlideWindow(const RateLimiterSlideWindow&) = delete;
+  RateLimiterSlideWindow& operator=(const RateLimiterSlideWindow&) = delete;
+
+  ~RateLimiterSlideWindow() override;
+
+  // If the event is allowed, the method returns `true` and updates state to
+  // prepare for the next call. Otherwise returns false.
+  bool Acquire(size_t event_size) override;
+
+ private:
+  // Called every `time_bucket_` as long as `bucket_events_size_` is not empty.
+  // Shifts buckets by one (drops the oldest bucket, adds a new empty one).
+  void BucketsShift();
+
+  SEQUENCE_CHECKER(sequence_checker_);
+
+  // Total size of all events to be accepted in the window.
+  const size_t total_size_;
+
+  // Window bucket time period. Must be positive.
+  const base::TimeDelta time_bucket_;
+
+  // Window time span is determined as `bucket_count_` * `time_bucket_`.
+  // Must be positive.
+  const size_t bucket_count_;
+
+  // The events size aggregated over `bucket_count_` * `time_bucket_`.
+  size_t current_size_ GUARDED_BY_CONTEXT(sequence_checker_) = 0u;
+
+  // Events sizes per bucket; undefined if empty, otherwise `front()` matches
+  // `[start_timestamp_, start_timestamp_ + time_bucket_)` interval.
+  std::queue<size_t> bucket_events_size_ GUARDED_BY_CONTEXT(sequence_checker_);
+
+  // First bucket timestamp.
+  base::Time start_timestamp_ GUARDED_BY_CONTEXT(sequence_checker_);
+
+  // Weak ptr factory.
+  base::WeakPtrFactory<RateLimiterSlideWindow> weak_ptr_factory_{this};
+};
+}  // namespace reporting
+
+#endif  // COMPONENTS_REPORTING_UTIL_RATE_LIMITER_SLIDE_WINDOW_H_
diff --git a/components/reporting/util/rate_limiter_slide_window_unittest.cc b/components/reporting/util/rate_limiter_slide_window_unittest.cc
new file mode 100644
index 0000000..7b14a95
--- /dev/null
+++ b/components/reporting/util/rate_limiter_slide_window_unittest.cc
@@ -0,0 +1,63 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/reporting/util/rate_limiter_slide_window.h"
+
+#include <cstddef>
+
+#include "base/rand_util.h"
+#include "base/test/task_environment.h"
+#include "base/time/time.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace reporting {
+namespace {
+
+constexpr size_t kTotalSize = 1024u;
+constexpr base::TimeDelta kTimeWindow = base::Seconds(16);
+constexpr size_t kBucketCount = 8;
+constexpr base::TimeDelta kBucket = kTimeWindow / kBucketCount;
+
+class RateLimiterSlideWindowTest : public ::testing::Test {
+ protected:
+  base::test::TaskEnvironment task_environment_{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+
+  RateLimiterSlideWindow rate_limiter_{kTotalSize, kTimeWindow, kBucketCount};
+};
+
+TEST_F(RateLimiterSlideWindowTest, SingularEvent) {
+  ASSERT_FALSE(rate_limiter_.Acquire(kTotalSize + 1));
+  ASSERT_TRUE(rate_limiter_.Acquire(kTotalSize));
+  ASSERT_FALSE(rate_limiter_.Acquire(1u));
+  task_environment_.FastForwardBy(kTimeWindow - kBucket);
+  ASSERT_FALSE(rate_limiter_.Acquire(kTotalSize));
+  task_environment_.FastForwardBy(kBucket);
+  ASSERT_TRUE(rate_limiter_.Acquire(kTotalSize));
+  ASSERT_FALSE(rate_limiter_.Acquire(1u));
+}
+
+TEST_F(RateLimiterSlideWindowTest, SteadyEventsStream) {
+  for (size_t i = 0; i < 2 * kBucketCount; ++i) {
+    ASSERT_TRUE(rate_limiter_.Acquire(kTotalSize / kBucketCount));
+    if (i >= kBucketCount) {
+      ASSERT_FALSE(rate_limiter_.Acquire(1u));
+    }
+    task_environment_.FastForwardBy(kBucket);
+  }
+}
+
+TEST_F(RateLimiterSlideWindowTest, RandomizedEventsStream) {
+  for (size_t i = 0; i < 2 * kBucketCount; ++i) {
+    ASSERT_TRUE(rate_limiter_.Acquire(kTotalSize / kBucketCount));
+    if (i >= kBucketCount) {
+      ASSERT_FALSE(rate_limiter_.Acquire(1u));
+    }
+    task_environment_.FastForwardBy(kBucket +
+                                    base::Milliseconds(base::RandInt(0, 100)));
+  }
+}
+}  // namespace
+}  // namespace reporting
diff --git a/components/resources/default_100_percent/autofill/metadata/amex.png b/components/resources/default_100_percent/autofill/metadata/amex.png
index 44efed3..1da7b43 100644
--- a/components/resources/default_100_percent/autofill/metadata/amex.png
+++ b/components/resources/default_100_percent/autofill/metadata/amex.png
Binary files differ
diff --git a/components/resources/default_200_percent/autofill/metadata/amex.png b/components/resources/default_200_percent/autofill/metadata/amex.png
index d970ef08..b449737 100644
--- a/components/resources/default_200_percent/autofill/metadata/amex.png
+++ b/components/resources/default_200_percent/autofill/metadata/amex.png
Binary files differ
diff --git a/components/resources/default_300_percent/autofill/metadata/amex.png b/components/resources/default_300_percent/autofill/metadata/amex.png
index f5571bb8..58a97399d 100644
--- a/components/resources/default_300_percent/autofill/metadata/amex.png
+++ b/components/resources/default_300_percent/autofill/metadata/amex.png
Binary files differ
diff --git a/components/safe_browsing/core/browser/db/BUILD.gn b/components/safe_browsing/core/browser/db/BUILD.gn
index e9a3fc1..7536ab93 100644
--- a/components/safe_browsing/core/browser/db/BUILD.gn
+++ b/components/safe_browsing/core/browser/db/BUILD.gn
@@ -130,6 +130,7 @@
     ":v4_protocol_manager_util",
     ":v4_store",
     "//base",
+    "//components/safe_browsing/core/common",
     "//components/safe_browsing/core/common/proto:webui_proto",
   ]
 }
diff --git a/components/safe_browsing/core/browser/db/v4_database.cc b/components/safe_browsing/core/browser/db/v4_database.cc
index eb5f11a..d894987 100644
--- a/components/safe_browsing/core/browser/db/v4_database.cc
+++ b/components/safe_browsing/core/browser/db/v4_database.cc
@@ -18,6 +18,7 @@
 #include "base/task/sequenced_task_runner.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
+#include "components/safe_browsing/core/common/features.h"
 #include "components/safe_browsing/core/common/proto/webui.pb.h"
 
 #if BUILDFLAG(IS_APPLE)
@@ -274,22 +275,35 @@
 }
 
 void V4Database::GetStoresMatchingFullHash(
-    const FullHashStr& full_hash,
+    const std::vector<FullHashStr>& full_hashes,
     const StoresToCheck& stores_to_check,
-    StoreAndHashPrefixes* matched_store_and_hash_prefixes) {
+    base::OnceCallback<void(FullHashToStoreAndHashPrefixesMap)> callback) {
+  FullHashToStoreAndHashPrefixesMap results;
   DCHECK_CALLED_ON_VALID_SEQUENCE(sb_sequence_checker_);
-  matched_store_and_hash_prefixes->clear();
-  for (const ListIdentifier& identifier : stores_to_check) {
-    if (!IsStoreAvailable(identifier))
-      continue;
-    const auto& store_pair = store_map_->find(identifier);
-    DCHECK(store_pair != store_map_->end());
-    const std::unique_ptr<V4Store>& store = store_pair->second;
-    HashPrefixStr hash_prefix = store->GetMatchingHashPrefix(full_hash);
-    if (!hash_prefix.empty()) {
-      matched_store_and_hash_prefixes->emplace_back(identifier, hash_prefix);
+  for (const auto& full_hash : full_hashes) {
+    for (const ListIdentifier& identifier : stores_to_check) {
+      if (!IsStoreAvailable(identifier)) {
+        continue;
+      }
+      const auto& store_pair = store_map_->find(identifier);
+      DCHECK(store_pair != store_map_->end());
+      const std::unique_ptr<V4Store>& store = store_pair->second;
+      HashPrefixStr hash_prefix = store->GetMatchingHashPrefix(full_hash);
+      if (!hash_prefix.empty()) {
+        results[full_hash].emplace_back(identifier, hash_prefix);
+      }
     }
   }
+
+  if (base::FeatureList::IsEnabled(kMmapSafeBrowsingDatabase) &&
+      kMmapSafeBrowsingDatabaseAsync.Get()) {
+    // Until this is asynchronous for accessing memory mapped files on
+    // background threads, simulate this being async.
+    base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
+        FROM_HERE, base::BindOnce(std::move(callback), std::move(results)));
+  } else {
+    std::move(callback).Run(std::move(results));
+  }
 }
 
 void V4Database::ResetStores(
diff --git a/components/safe_browsing/core/browser/db/v4_database.h b/components/safe_browsing/core/browser/db/v4_database.h
index c81bf3e..54de287 100644
--- a/components/safe_browsing/core/browser/db/v4_database.h
+++ b/components/safe_browsing/core/browser/db/v4_database.h
@@ -150,13 +150,14 @@
   virtual bool AreAnyStoresAvailable(
       const StoresToCheck& stores_to_check) const;
 
-  // Searches for a hash prefix matching the |full_hash| in stores in the
-  // database, filtered by |stores_to_check|, and returns the identifier of the
-  // store along with the matching hash prefix in |matched_hash_prefix_map|.
+  // Searches for hash prefixes matching the |full_hashes| in stores in the
+  // database, filtered by |stores_to_check|. The callback is run synchronously,
+  // or asynchronously if MmapSafeBrowsingDatabaseAsync is enabled, with the
+  // identifier of the stores along with the matching hash prefixes.
   virtual void GetStoresMatchingFullHash(
-      const FullHashStr& full_hash,
+      const std::vector<FullHashStr>& full_hashes,
       const StoresToCheck& stores_to_check,
-      StoreAndHashPrefixes* matched_store_and_full_hashes);
+      base::OnceCallback<void(FullHashToStoreAndHashPrefixesMap)> callback);
 
   // Returns the file size of the store in bytes. Returns 0 if the store is not
   // found.
diff --git a/components/safe_browsing/core/browser/db/v4_database_unittest.cc b/components/safe_browsing/core/browser/db/v4_database_unittest.cc
index eaecd949..a9ca7fc2 100644
--- a/components/safe_browsing/core/browser/db/v4_database_unittest.cc
+++ b/components/safe_browsing/core/browser/db/v4_database_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/run_loop.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/test/task_environment.h"
+#include "base/test/test_future.h"
 #include "base/test/test_simple_task_runner.h"
 #include "components/safe_browsing/core/browser/db/v4_database.h"
 #include "components/safe_browsing/core/browser/db/v4_store.h"
@@ -361,9 +362,11 @@
   EXPECT_EQ(true, created_and_called_back_);
 
   StoresToCheck stores_to_check({linux_malware_id_, win_malware_id_});
-  StoreAndHashPrefixes store_and_hash_prefixes;
-  v4_database_->GetStoresMatchingFullHash("anything", stores_to_check,
-                                          &store_and_hash_prefixes);
+  base::test::TestFuture<FullHashToStoreAndHashPrefixesMap> results;
+  v4_database_->GetStoresMatchingFullHash({"anything"}, stores_to_check,
+                                          results.GetCallback());
+  FullHashToStoreAndHashPrefixesMap map = results.Get();
+  StoreAndHashPrefixes store_and_hash_prefixes = map["anything"];
   EXPECT_EQ(2u, store_and_hash_prefixes.size());
   StoresToCheck stores_found;
   for (const auto& it : store_and_hash_prefixes) {
@@ -383,10 +386,12 @@
   WaitForTasksOnTaskRunner();
   EXPECT_EQ(true, created_and_called_back_);
 
-  StoreAndHashPrefixes store_and_hash_prefixes;
+  base::test::TestFuture<FullHashToStoreAndHashPrefixesMap> results;
   v4_database_->GetStoresMatchingFullHash(
-      "anything", StoresToCheck({linux_malware_id_, win_malware_id_}),
-      &store_and_hash_prefixes);
+      {"anything"}, StoresToCheck({linux_malware_id_, win_malware_id_}),
+      results.GetCallback());
+  FullHashToStoreAndHashPrefixesMap map = results.Get();
+  StoreAndHashPrefixes store_and_hash_prefixes = map["anything"];
   EXPECT_TRUE(store_and_hash_prefixes.empty());
 }
 
@@ -407,10 +412,12 @@
       v4_database_->store_map_->at(win_malware_id_).get());
   store->set_hash_prefix_matches(true);
 
-  StoreAndHashPrefixes store_and_hash_prefixes;
+  base::test::TestFuture<FullHashToStoreAndHashPrefixesMap> results;
   v4_database_->GetStoresMatchingFullHash(
-      "anything", StoresToCheck({linux_malware_id_, win_malware_id_}),
-      &store_and_hash_prefixes);
+      {"anything"}, StoresToCheck({linux_malware_id_, win_malware_id_}),
+      results.GetCallback());
+  FullHashToStoreAndHashPrefixesMap map = results.Get();
+  StoreAndHashPrefixes store_and_hash_prefixes = map["anything"];
   EXPECT_EQ(1u, store_and_hash_prefixes.size());
   EXPECT_EQ(store_and_hash_prefixes.begin()->list_id, win_malware_id_);
   EXPECT_FALSE(store_and_hash_prefixes.begin()->hash_prefix.empty());
@@ -430,9 +437,11 @@
   EXPECT_EQ(true, created_and_called_back_);
 
   // Don't add win_malware_id_ to the StoresToCheck.
-  StoreAndHashPrefixes store_and_hash_prefixes;
+  base::test::TestFuture<FullHashToStoreAndHashPrefixesMap> results;
   v4_database_->GetStoresMatchingFullHash(
-      "anything", StoresToCheck({linux_malware_id_}), &store_and_hash_prefixes);
+      {"anything"}, StoresToCheck({linux_malware_id_}), results.GetCallback());
+  FullHashToStoreAndHashPrefixesMap map = results.Get();
+  StoreAndHashPrefixes store_and_hash_prefixes = map["anything"];
   EXPECT_EQ(1u, store_and_hash_prefixes.size());
   EXPECT_EQ(store_and_hash_prefixes.begin()->list_id, linux_malware_id_);
   EXPECT_FALSE(store_and_hash_prefixes.begin()->hash_prefix.empty());
diff --git a/components/safe_browsing/core/browser/db/v4_get_hash_protocol_manager.h b/components/safe_browsing/core/browser/db/v4_get_hash_protocol_manager.h
index 1fea353..edfd2ab 100644
--- a/components/safe_browsing/core/browser/db/v4_get_hash_protocol_manager.h
+++ b/components/safe_browsing/core/browser/db/v4_get_hash_protocol_manager.h
@@ -42,11 +42,6 @@
 
 class V4GetHashProtocolManagerFuzzer;
 
-// The matching hash prefixes and corresponding stores, for each full hash
-// generated for a given URL.
-typedef std::unordered_map<FullHashStr, StoreAndHashPrefixes>
-    FullHashToStoreAndHashPrefixesMap;
-
 // ----------------------------------------------------------------
 
 // All information about a particular full hash i.e. negative TTL, store for
diff --git a/components/safe_browsing/core/browser/db/v4_local_database_manager.cc b/components/safe_browsing/core/browser/db/v4_local_database_manager.cc
index 7057aea4..b1080396 100644
--- a/components/safe_browsing/core/browser/db/v4_local_database_manager.cc
+++ b/components/safe_browsing/core/browser/db/v4_local_database_manager.cc
@@ -271,6 +271,25 @@
   }
 }
 
+bool GetPrefixMatchesIsAsync() {
+  return base::FeatureList::IsEnabled(kMmapSafeBrowsingDatabase) &&
+         kMmapSafeBrowsingDatabaseAsync.Get();
+}
+
+void HandleUrlCallback(base::OnceCallback<void(bool)> callback,
+                       FullHashToStoreAndHashPrefixesMap results) {
+  bool allowed = !results.empty();
+  if (GetPrefixMatchesIsAsync()) {
+    // This callback was already run asynchronously so no need for another
+    // thread hop.
+    std::move(callback).Run(allowed);
+  } else {
+    // Need a thread hop to avoid reentrancy.
+    base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
+        FROM_HERE, base::BindOnce(std::move(callback), allowed));
+  }
+}
+
 }  // namespace
 
 V4LocalDatabaseManager::PendingCheck::PendingCheck(
@@ -529,12 +548,8 @@
       std::vector<GURL>(1, url),
       MechanismExperimentHashDatabaseCache::kNoExperiment);
 
-  AsyncMatch result =
-      HandleAllowlistCheck(std::move(check), /*allow_async_check=*/false);
-  DCHECK_NE(AsyncMatch::ASYNC, result);
-  sb_task_runner()->PostTask(
-      FROM_HERE,
-      base::BindOnce(std::move(callback), result == AsyncMatch::MATCH));
+  HandleAllowlistCheck(std::move(check), /*allow_async_full_hash_check=*/false,
+                       std::move(callback));
 }
 
 bool V4LocalDatabaseManager::CheckUrlForSubresourceFilter(const GURL& url,
@@ -580,7 +595,9 @@
       std::vector<GURL>(1, url),
       MechanismExperimentHashDatabaseCache::kNoExperiment);
 
-  return HandleAllowlistCheck(std::move(check), /*allow_async_check=*/true);
+  return HandleAllowlistCheck(std::move(check),
+                              /*allow_async_full_hash_check=*/true,
+                              base::OnceCallback<void(bool)>());
 }
 
 void V4LocalDatabaseManager::MatchDownloadAllowlistUrl(
@@ -733,23 +750,14 @@
   }
 }
 
-bool V4LocalDatabaseManager::GetPrefixMatches(
-    const std::unique_ptr<PendingCheck>& check) {
+void V4LocalDatabaseManager::GetPrefixMatches(
+    PendingCheck* check,
+    base::OnceCallback<void(FullHashToStoreAndHashPrefixesMap)> callback) {
   DCHECK(sb_task_runner()->RunsTasksInCurrentSequence());
   DCHECK(enabled_);
 
-  check->full_hash_to_store_and_hash_prefixes.clear();
-  for (const auto& full_hash : check->full_hashes) {
-    StoreAndHashPrefixes matched_store_and_hash_prefixes;
-    v4_database_->GetStoresMatchingFullHash(full_hash, check->stores_to_check,
-                                            &matched_store_and_hash_prefixes);
-    if (!matched_store_and_hash_prefixes.empty()) {
-      (check->full_hash_to_store_and_hash_prefixes)[full_hash] =
-          matched_store_and_hash_prefixes;
-    }
-  }
-
-  return !check->full_hash_to_store_and_hash_prefixes.empty();
+  v4_database_->GetStoresMatchingFullHash(
+      check->full_hashes, check->stores_to_check, std::move(callback));
 }
 
 void V4LocalDatabaseManager::GetSeverestThreatTypeAndMetadata(
@@ -803,37 +811,107 @@
 
 AsyncMatch V4LocalDatabaseManager::HandleAllowlistCheck(
     std::unique_ptr<PendingCheck> check,
-    bool allow_async_check) {
+    bool allow_async_full_hash_check,
+    base::OnceCallback<void(bool)> callback) {
   // We don't bother queuing allowlist checks since the DB will
   // normally be available already -- allowlists are used after page load,
   // and navigations are blocked until the DB is ready and dequeues checks.
   // The caller should have already checked that the DB is ready.
   DCHECK(v4_database_);
 
-  GetPrefixMatches(check);
+  PendingCheck* check_ptr = check.get();
+  AsyncMatch match;
+
+  GetPrefixMatches(
+      check_ptr,
+      base::BindOnce(&V4LocalDatabaseManager::HandleAllowlistCheckContinuation,
+                     weak_factory_.GetWeakPtr(), std::move(check),
+                     allow_async_full_hash_check, std::move(callback),
+                     GetPrefixMatchesIsAsync() ? nullptr : &match));
+
+  if (GetPrefixMatchesIsAsync()) {
+    AddPendingCheck(check_ptr);
+    return AsyncMatch::ASYNC;
+  }
+
+  return match;
+}
+
+void V4LocalDatabaseManager::HandleAllowlistCheckContinuation(
+    std::unique_ptr<PendingCheck> check,
+    bool allow_async_full_hash_check,
+    base::OnceCallback<void(bool)> callback,
+    AsyncMatch* match,
+    FullHashToStoreAndHashPrefixesMap results) {
+  DCHECK(sb_task_runner()->RunsTasksInCurrentSequence());
+
+  AsyncMatch local_match;
+  if (GetPrefixMatchesIsAsync()) {
+    if (!enabled_) {
+      DCHECK(pending_checks_.empty());
+      return;
+    }
+
+    const auto it = pending_checks_.find(check.get());
+    if (it == pending_checks_.end()) {
+      // The check has since been cancelled.
+      return;
+    }
+
+    RemovePendingCheck(it);
+    match = &local_match;
+  }
+
+  check->full_hash_to_store_and_hash_prefixes = results;
   GetArtificialPrefixMatches(check);
   if (check->full_hash_to_store_and_hash_prefixes.empty() &&
       check->artificial_full_hash_to_store_and_hash_prefixes.empty()) {
-    return AsyncMatch::NO_MATCH;
-  }
+    *match = AsyncMatch::NO_MATCH;
+  } else {
+    // Look for any full-length hash in the matches. If there is one,
+    // there's no need for a full-hash check. This saves bandwidth for
+    // very popular sites since they'll have full-length hashes locally.
+    // These loops will have exactly 1 entry most of the time.
+    bool found = false;
+    for (const auto& entry : check->full_hash_to_store_and_hash_prefixes) {
+      for (const auto& store_and_prefix : entry.second) {
+        if (store_and_prefix.hash_prefix.size() == kMaxHashPrefixLength) {
+          *match = AsyncMatch::MATCH;
+          found = true;
+          break;
+        }
+      }
+    }
 
-  // Look for any full-length hash in the matches. If there is one,
-  // there's no need for a full-hash check. This saves bandwidth for
-  // very popular sites since they'll have full-length hashes locally.
-  // These loops will have exactly 1 entry most of the time.
-  for (const auto& entry : check->full_hash_to_store_and_hash_prefixes) {
-    for (const auto& store_and_prefix : entry.second) {
-      if (store_and_prefix.hash_prefix.size() == kMaxHashPrefixLength) {
-        return AsyncMatch::MATCH;
+    if (!found) {
+      if (!allow_async_full_hash_check) {
+        *match = AsyncMatch::NO_MATCH;
+      } else {
+        *match = AsyncMatch::ASYNC;
+        ScheduleFullHashCheck(std::move(check));
+        return;
       }
     }
   }
 
-  if (!allow_async_check) {
-    return AsyncMatch::NO_MATCH;
+  if (check->client_callback_type == ClientCallbackType::CHECK_OTHER) {
+    bool result = *match == AsyncMatch::MATCH;
+    if (GetPrefixMatchesIsAsync()) {
+      // This is already asynchronous so no need for another PostTask.
+      std::move(callback).Run(result);
+    } else {
+      sb_task_runner()->PostTask(FROM_HERE,
+                                 base::BindOnce(std::move(callback), result));
+    }
+  } else if (check->client_callback_type ==
+             ClientCallbackType::CHECK_CSD_ALLOWLIST) {
+    if (GetPrefixMatchesIsAsync()) {
+      check->most_severe_threat_type = SB_THREAT_TYPE_CSD_ALLOWLIST;
+      RespondToClient(std::move(check));
+    }
+  } else {
+    NOTREACHED();
   }
-  ScheduleFullHashCheck(std::move(check));
-  return AsyncMatch::ASYNC;
 }
 
 bool V4LocalDatabaseManager::HandleCheck(std::unique_ptr<PendingCheck> check) {
@@ -842,15 +920,57 @@
     return false;
   }
 
-  GetPrefixMatches(check);
+  PendingCheck* check_ptr = check.get();
+  AsyncMatch match;
+  GetPrefixMatches(
+      check_ptr,
+      base::BindOnce(&V4LocalDatabaseManager::HandleCheckContinuation,
+                     weak_factory_.GetWeakPtr(), std::move(check),
+                     GetPrefixMatchesIsAsync() ? nullptr : &match));
+
+  if (GetPrefixMatchesIsAsync()) {
+    AddPendingCheck(check_ptr);
+    return false;
+  }
+
+  return match == AsyncMatch::NO_MATCH;
+}
+
+void V4LocalDatabaseManager::HandleCheckContinuation(
+    std::unique_ptr<PendingCheck> check,
+    AsyncMatch* match,
+    FullHashToStoreAndHashPrefixesMap results) {
+  AsyncMatch local_match;
+  if (GetPrefixMatchesIsAsync()) {
+    if (!enabled_) {
+      DCHECK(pending_checks_.empty());
+      return;
+    }
+
+    const auto it = pending_checks_.find(check.get());
+    if (it == pending_checks_.end()) {
+      // The check has since been cancelled.
+      return;
+    }
+
+    RemovePendingCheck(it);
+    match = &local_match;
+  }
+
+  check->full_hash_to_store_and_hash_prefixes = results;
   GetArtificialPrefixMatches(check);
   if (check->full_hash_to_store_and_hash_prefixes.empty() &&
       check->artificial_full_hash_to_store_and_hash_prefixes.empty()) {
-    return true;
-  }
+    *match = AsyncMatch::NO_MATCH;
 
-  ScheduleFullHashCheck(std::move(check));
-  return false;
+    if (GetPrefixMatchesIsAsync()) {
+      RespondToClient(std::move(check));
+    }
+  } else {
+    *match = AsyncMatch::ASYNC;
+
+    ScheduleFullHashCheck(std::move(check));
+  }
 }
 
 void V4LocalDatabaseManager::PopulateArtificialDatabase() {
@@ -917,8 +1037,8 @@
       std::vector<GURL>(1, url),
       MechanismExperimentHashDatabaseCache::kNoExperiment);
 
-  sb_task_runner()->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback), GetPrefixMatches(check)));
+  GetPrefixMatches(check.get(),
+                   base::BindOnce(&HandleUrlCallback, std::move(callback)));
 }
 
 void V4LocalDatabaseManager::OnFullHashResponse(
@@ -977,12 +1097,42 @@
   checks.swap(queued_checks_);
 
   for (auto& it : checks) {
-    if (!GetPrefixMatches(it)) {
-      RespondToClient(std::move(it));
-    } else {
-      AddPendingCheck(it.get());
-      PerformFullHashCheck(std::move(it));
+    PendingCheck* check_ptr = it.get();
+
+    if (GetPrefixMatchesIsAsync()) {
+      AddPendingCheck(check_ptr);
     }
+
+    GetPrefixMatches(
+        check_ptr,
+        base::BindOnce(&V4LocalDatabaseManager::ProcessQueuedChecksContinuation,
+                       weak_factory_.GetWeakPtr(), std::move(it)));
+  }
+}
+
+void V4LocalDatabaseManager::ProcessQueuedChecksContinuation(
+    std::unique_ptr<PendingCheck> check,
+    FullHashToStoreAndHashPrefixesMap results) {
+  if (GetPrefixMatchesIsAsync()) {
+    if (!enabled_) {
+      DCHECK(pending_checks_.empty());
+      return;
+    }
+
+    const auto it = pending_checks_.find(check.get());
+    if (it == pending_checks_.end()) {
+      // The check has since been cancelled.
+      return;
+    }
+
+    RemovePendingCheck(it);
+  }
+
+  if (results.empty()) {
+    RespondToClient(std::move(check));
+  } else {
+    AddPendingCheck(check.get());
+    PerformFullHashCheck(std::move(check));
   }
 }
 
diff --git a/components/safe_browsing/core/browser/db/v4_local_database_manager.h b/components/safe_browsing/core/browser/db/v4_local_database_manager.h
index 04a04ca8..920593a 100644
--- a/components/safe_browsing/core/browser/db/v4_local_database_manager.h
+++ b/components/safe_browsing/core/browser/db/v4_local_database_manager.h
@@ -260,8 +260,12 @@
   void GetArtificialPrefixMatches(const std::unique_ptr<PendingCheck>& check);
 
   // Identifies the prefixes and the store they matched in, for a given |check|.
-  // Returns true if one or more hash prefix matches are found; false otherwise.
-  bool GetPrefixMatches(const std::unique_ptr<PendingCheck>& check);
+  // The callback is run synchronously, or asynchronously if
+  // MmapSafeBrowsingDatabaseAsync is enabled, with the identifier of the stores
+  // along with the matching hash prefixes.
+  void GetPrefixMatches(
+      PendingCheck* check,
+      base::OnceCallback<void(FullHashToStoreAndHashPrefixesMap)> callback);
 
   // Goes over the |full_hash_infos| and stores the most severe SBThreatType in
   // |most_severe_threat_type|, the corresponding metadata in |metadata|, and
@@ -285,13 +289,29 @@
   // schedules a task to perform full hash check and returns false.
   bool HandleCheck(std::unique_ptr<PendingCheck> check);
 
+  // `match` is only valid if kMmapSafeBrowsingDatabaseAsync is false.
+  void HandleCheckContinuation(std::unique_ptr<PendingCheck> check,
+                               AsyncMatch* match,
+                               FullHashToStoreAndHashPrefixesMap results);
+
   // Like HandleCheck, but for allowlists that have both full-hashes and
-  // partial hashes in the DB. If |allow_async_check| is false, it will only
-  // return either MATCH or NO_MATCH. If |allow_async_check| is true, it returns
+  // partial hashes in the DB. If |allow_async_full_hash_check| is false, it
+  // will only return either MATCH or NO_MATCH unless
+  // kMmapSafeBrowsingDatabaseAsync is enabled in which case it will return
+  // ASYNC. If |allow_async_full_hash_check| is true, it returns
   // MATCH, NO_MATCH, or ASYNC. In the ASYNC case, it will schedule performing
   // the full hash check.
   AsyncMatch HandleAllowlistCheck(std::unique_ptr<PendingCheck> check,
-                                  bool allow_async_check);
+                                  bool allow_async_full_hash_check,
+                                  base::OnceCallback<void(bool)> callback);
+
+  // `match` is only valid if async is kMmapSafeBrowsingDatabaseAsync is false.
+  void HandleAllowlistCheckContinuation(
+      std::unique_ptr<PendingCheck> check,
+      bool allow_async_full_hash_check,
+      base::OnceCallback<void(bool)> callback,
+      AsyncMatch* match,
+      FullHashToStoreAndHashPrefixesMap results);
 
   // Computes the hashes of URLs that have artificially been marked as unsafe
   // using any of the following command line flags: "mark_as_phishing",
@@ -322,6 +342,10 @@
   // while the database was loading from disk.
   void ProcessQueuedChecks();
 
+  void ProcessQueuedChecksContinuation(
+      std::unique_ptr<PendingCheck> check,
+      FullHashToStoreAndHashPrefixesMap results);
+
   // Called on StopOnSBThread, it responds to the clients that are (1) waiting
   // for the database to become available with the verdict as SAFE, or (2)
   // waiting for a full hash response from the SafeBrowsing service.
@@ -417,10 +441,13 @@
   // name of the file on disk that would contain the prefixes, if applicable.
   ListInfos list_infos_;
 
-  // The checks awaiting for a full hash response from the SafeBrowsing service.
   // These are used to avoid responding to a client if it cancels a pending
   // check, and to respond back "safe" to all waiting clients if SafeBrowsing is
-  // stopped.
+  // stopped. This occurs in two conditions:
+  // 1) If kMmapSafeBrowsingDatabaseAsync is enabled then the hash prefix map
+  // lookup is asynchronous.
+  // 2) Checks are awaiting for a full hash response from the SafeBrowsing
+  // service.
   PendingChecks pending_checks_;
 
   // The checks that need to be scheduled when the database becomes ready for
diff --git a/components/safe_browsing/core/browser/db/v4_local_database_manager_unittest.cc b/components/safe_browsing/core/browser/db/v4_local_database_manager_unittest.cc
index 572bdc4..1b3b625 100644
--- a/components/safe_browsing/core/browser/db/v4_local_database_manager_unittest.cc
+++ b/components/safe_browsing/core/browser/db/v4_local_database_manager_unittest.cc
@@ -27,6 +27,7 @@
 #include "components/safe_browsing/core/browser/db/v4_database.h"
 #include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h"
 #include "components/safe_browsing/core/browser/db/v4_test_util.h"
+#include "components/safe_browsing/core/common/features.h"
 #include "crypto/sha2.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
@@ -171,18 +172,29 @@
 
   // V4Database implementation
   void GetStoresMatchingFullHash(
-      const FullHashStr& full_hash,
+      const std::vector<FullHashStr>& full_hashes,
       const StoresToCheck& stores_to_check,
-      StoreAndHashPrefixes* store_and_hash_prefixes) override {
-    store_and_hash_prefixes->clear();
-    for (const StoreAndHashPrefix& stored_sahp : store_and_hash_prefixes_) {
-      if (stores_to_check.count(stored_sahp.list_id) == 0) {
-        continue;
+      base::OnceCallback<void(FullHashToStoreAndHashPrefixesMap)> callback)
+      override {
+    FullHashToStoreAndHashPrefixesMap results;
+    for (const auto& full_hash : full_hashes) {
+      for (const StoreAndHashPrefix& stored_sahp : store_and_hash_prefixes_) {
+        if (stores_to_check.count(stored_sahp.list_id) == 0) {
+          continue;
+        }
+        const PrefixSize& prefix_size = stored_sahp.hash_prefix.size();
+        if (!full_hash.compare(0, prefix_size, stored_sahp.hash_prefix)) {
+          results[full_hash].push_back(stored_sahp);
+        }
       }
-      const PrefixSize& prefix_size = stored_sahp.hash_prefix.size();
-      if (!full_hash.compare(0, prefix_size, stored_sahp.hash_prefix)) {
-        store_and_hash_prefixes->push_back(stored_sahp);
-      }
+    }
+    if (base::FeatureList::IsEnabled(kMmapSafeBrowsingDatabase) &&
+        kMmapSafeBrowsingDatabaseAsync.Get()) {
+      // Simulate async behavior of real implementation.
+      base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
+          FROM_HERE, base::BindOnce(std::move(callback), std::move(results)));
+    } else {
+      std::move(callback).Run(std::move(results));
     }
   }
 
@@ -557,10 +569,21 @@
 TEST_F(V4LocalDatabaseManagerTest,
        TestCheckBrowseUrlWithEmptyStoresReturnsNoMatch) {
   WaitForTasksOnTaskRunner();
-  // Both the stores are empty right now so CheckBrowseUrl should return true.
-  EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
-      GURL("http://example.com/a/"), usual_threat_types_, nullptr,
-      MechanismExperimentHashDatabaseCache::kNoExperiment));
+  const GURL url("http://example.com/a/");
+  TestClient client(SB_THREAT_TYPE_SAFE, url);
+  bool result = v4_local_database_manager_->CheckBrowseUrl(
+      url, usual_threat_types_, &client,
+      MechanismExperimentHashDatabaseCache::kNoExperiment);
+
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_FALSE(result);
+    EXPECT_FALSE(client.on_check_browse_url_result_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client.on_check_browse_url_result_called());
+  } else {
+    // Both the stores are empty right now so CheckBrowseUrl should return true.
+    EXPECT_TRUE(result);
+  }
 }
 
 TEST_F(V4LocalDatabaseManagerTest, TestCheckBrowseUrlWithFakeDbReturnsMatch) {
@@ -661,14 +684,22 @@
   ReplaceV4Database(store_and_hash_prefixes, /* stores_available= */ true);
 
   TestAllowlistClient client(
-      /* match_expected= */ false,
+      /* match_expected= */ true,
       /* expected_sb_threat_type= */ SB_THREAT_TYPE_CSD_ALLOWLIST);
   const GURL url_check("https://" + url_safe_no_scheme);
-  EXPECT_EQ(AsyncMatch::MATCH, v4_local_database_manager_->CheckCsdAllowlistUrl(
-                                   url_check, &client));
+  auto result =
+      v4_local_database_manager_->CheckCsdAllowlistUrl(url_check, &client);
 
-  WaitForTasksOnTaskRunner();
-  EXPECT_FALSE(client.callback_called());
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_EQ(AsyncMatch::ASYNC, result);
+    EXPECT_FALSE(client.callback_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client.callback_called());
+  } else {
+    EXPECT_EQ(AsyncMatch::MATCH, result);
+    WaitForTasksOnTaskRunner();
+    EXPECT_FALSE(client.callback_called());
+  }
 }
 
 TEST_F(V4LocalDatabaseManagerTest, TestCheckCsdAllowlistWithNoMatch) {
@@ -688,12 +719,19 @@
       /* match_expected= */ true,
       /* expected_sb_threat_type= */ SB_THREAT_TYPE_CSD_ALLOWLIST);
   const GURL url_check("https://other.com/");
-  EXPECT_EQ(
-      AsyncMatch::NO_MATCH,
-      v4_local_database_manager_->CheckCsdAllowlistUrl(url_check, &client));
+  auto result =
+      v4_local_database_manager_->CheckCsdAllowlistUrl(url_check, &client);
 
-  WaitForTasksOnTaskRunner();
-  EXPECT_FALSE(client.callback_called());
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_EQ(AsyncMatch::ASYNC, result);
+    EXPECT_FALSE(client.callback_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client.callback_called());
+  } else {
+    EXPECT_EQ(AsyncMatch::NO_MATCH, result);
+    WaitForTasksOnTaskRunner();
+    EXPECT_FALSE(client.callback_called());
+  }
 }
 
 // When allowlist is unavailable, all URLS should be allowed.
@@ -1445,13 +1483,24 @@
       MechanismExperimentHashDatabaseCache::kNoExperiment));
   // PerformFullHashCheck will not be called if there is a match within the
   // artificial database
+  WaitForTasksOnTaskRunner();
   EXPECT_FALSE(FakeV4LocalDatabaseManager::PerformFullHashCheckCalled(
       v4_local_database_manager_));
 
   const GURL url_good("https://other.example.com");
-  EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
-      url_good, usual_threat_types_, nullptr,
-      MechanismExperimentHashDatabaseCache::kNoExperiment));
+  TestClient client(SB_THREAT_TYPE_SAFE, url_good);
+  bool result = v4_local_database_manager_->CheckBrowseUrl(
+      url_good, usual_threat_types_, &client,
+      MechanismExperimentHashDatabaseCache::kNoExperiment);
+
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_FALSE(result);
+    EXPECT_FALSE(client.on_check_browse_url_result_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client.on_check_browse_url_result_called());
+  } else {
+    EXPECT_TRUE(result);
+  }
 
   WaitForTasksOnTaskRunner();
   StopLocalDatabaseManager();
@@ -1469,13 +1518,24 @@
       MechanismExperimentHashDatabaseCache::kNoExperiment));
   // PerformFullHashCheck will not be called if there is a match within the
   // artificial database
+  WaitForTasksOnTaskRunner();
   EXPECT_FALSE(FakeV4LocalDatabaseManager::PerformFullHashCheckCalled(
       v4_local_database_manager_));
 
   const GURL url_good("https://other.example.com");
-  EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
-      url_good, usual_threat_types_, nullptr,
-      MechanismExperimentHashDatabaseCache::kNoExperiment));
+  TestClient client(SB_THREAT_TYPE_SAFE, url_good);
+  bool result = v4_local_database_manager_->CheckBrowseUrl(
+      url_good, usual_threat_types_, &client,
+      MechanismExperimentHashDatabaseCache::kNoExperiment);
+
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_FALSE(result);
+    EXPECT_FALSE(client.on_check_browse_url_result_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client.on_check_browse_url_result_called());
+  } else {
+    EXPECT_TRUE(result);
+  }
 
   WaitForTasksOnTaskRunner();
   StopLocalDatabaseManager();
@@ -1493,13 +1553,24 @@
       MechanismExperimentHashDatabaseCache::kNoExperiment));
   // PerformFullHashCheck will not be called if there is a match within the
   // artificial database
+  WaitForTasksOnTaskRunner();
   EXPECT_FALSE(FakeV4LocalDatabaseManager::PerformFullHashCheckCalled(
       v4_local_database_manager_));
 
   const GURL url_good("https://other.example.com");
-  EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
-      url_good, usual_threat_types_, nullptr,
-      MechanismExperimentHashDatabaseCache::kNoExperiment));
+  TestClient client(SB_THREAT_TYPE_SAFE, url_good);
+  bool result = v4_local_database_manager_->CheckBrowseUrl(
+      url_good, usual_threat_types_, &client,
+      MechanismExperimentHashDatabaseCache::kNoExperiment);
+
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_FALSE(result);
+    EXPECT_FALSE(client.on_check_browse_url_result_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client.on_check_browse_url_result_called());
+  } else {
+    EXPECT_TRUE(result);
+  }
 
   WaitForTasksOnTaskRunner();
   StopLocalDatabaseManager();
@@ -1532,14 +1603,24 @@
       MechanismExperimentHashDatabaseCache::kNoExperiment));
   // PerformFullHashCheck will not be called if there is a match within the
   // artificial database
+  WaitForTasksOnTaskRunner();
   EXPECT_FALSE(FakeV4LocalDatabaseManager::PerformFullHashCheckCalled(
       v4_local_database_manager_));
 
   const GURL url_good("https://other.example.com");
   TestClient client_good(SB_THREAT_TYPE_SAFE, url_good);
-  EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
+  bool result = v4_local_database_manager_->CheckBrowseUrl(
       url_good, usual_threat_types_, &client_good,
-      MechanismExperimentHashDatabaseCache::kNoExperiment));
+      MechanismExperimentHashDatabaseCache::kNoExperiment);
+
+  if (kMmapSafeBrowsingDatabaseAsync.Get()) {
+    EXPECT_FALSE(result);
+    EXPECT_FALSE(client_good.on_check_browse_url_result_called());
+    WaitForTasksOnTaskRunner();
+    EXPECT_TRUE(client_good.on_check_browse_url_result_called());
+  } else {
+    EXPECT_TRUE(result);
+  }
 
   StopLocalDatabaseManager();
 }
diff --git a/components/safe_browsing/core/browser/db/v4_protocol_manager_util.h b/components/safe_browsing/core/browser/db/v4_protocol_manager_util.h
index ff7c9316..ab38c57 100644
--- a/components/safe_browsing/core/browser/db/v4_protocol_manager_util.h
+++ b/components/safe_browsing/core/browser/db/v4_protocol_manager_util.h
@@ -308,6 +308,11 @@
 // matched.
 using StoreAndHashPrefixes = std::vector<StoreAndHashPrefix>;
 
+// The matching hash prefixes and corresponding stores, for each full hash
+// generated for a given URL.
+using FullHashToStoreAndHashPrefixesMap =
+    std::unordered_map<FullHashStr, StoreAndHashPrefixes>;
+
 // Enumerate failures for histogramming purposes.  DO NOT CHANGE THE
 // ORDERING OF THESE VALUES.
 enum V4OperationResult {
diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc
index 613f580b..ade82b1 100644
--- a/components/safe_browsing/core/common/features.cc
+++ b/components/safe_browsing/core/common/features.cc
@@ -51,7 +51,7 @@
 
 BASE_FEATURE(kComponentUpdaterAndroidProtegoAllowlist,
              "SafeBrowsingComponentUpdaterAndroidProtegoAllowlist",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 BASE_FEATURE(kDelayedWarnings,
              "SafeBrowsingDelayedWarnings",
@@ -175,6 +175,10 @@
              "MmapSafeBrowsingDatabase",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
+constexpr base::FeatureParam<bool> kMmapSafeBrowsingDatabaseAsync{
+    &kMmapSafeBrowsingDatabase, "MmapSafeBrowsingDatabaseAsync",
+    /*default_value=*/false};
+
 BASE_FEATURE(kNestedArchives,
              "SafeBrowsingArchiveImprovements",
              base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/components/safe_browsing/core/common/features.h b/components/safe_browsing/core/common/features.h
index cedf44e..26bc68f 100644
--- a/components/safe_browsing/core/common/features.h
+++ b/components/safe_browsing/core/common/features.h
@@ -174,6 +174,10 @@
 // mapped into memory.
 BASE_DECLARE_FEATURE(kMmapSafeBrowsingDatabase);
 
+// Whether hash prefix lookups are done on a background thread when
+// kMmapSafeBrowsingDatabase is enabled.
+extern const base::FeatureParam<bool> kMmapSafeBrowsingDatabaseAsync;
+
 // Enables unpacking of nested archives during downloads.
 BASE_DECLARE_FEATURE(kNestedArchives);
 
diff --git a/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.cc b/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.cc
index c1afc1b..3bde2ffa 100644
--- a/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.cc
+++ b/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.cc
@@ -7,6 +7,8 @@
 #include <queue>
 #include <vector>
 #include "base/memory/scoped_refptr.h"
+#include "base/metrics/histogram_functions.h"
+#include "base/metrics/histogram_macros.h"
 #include "base/strings/string_piece_forward.h"
 #include "base/time/time.h"
 #include "components/segmentation_platform/embedder/tab_fetcher.h"
@@ -22,6 +24,49 @@
 namespace {
 constexpr uint32_t kTabCandidateLimit = 30;
 
+void RecordDelayFromStartupToFirstSyncUpdate(
+    base::TimeDelta sync_delay_duration) {
+  base::UmaHistogramLongTimes100(
+      "SegmentationPlatform.SyncSessions.TimeFromStartupToFirstSyncUpdate",
+      sync_delay_duration);
+}
+
+void RecordDelayFromTabLoadToSyncUpdate(base::TimeDelta sync_delay_duration) {
+  base::UmaHistogramLongTimes100(
+      "SegmentationPlatform.SyncSessions.TimeFromTabLoadedToSyncUpdate",
+      sync_delay_duration);
+}
+
+void RecordTabCountAtStartup(long cross_device_tab_count) {
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.SyncSessions.TabsCountAtStartup",
+      cross_device_tab_count);
+}
+
+void RecordTabCountFromStartupToSyncUpdate(long cross_device_tab_count) {
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.SyncSessions.TabsCountAtFirstSyncUpdate",
+      cross_device_tab_count);
+}
+
+void RecordRecent1HourTabCountAtFirstSyncUpdate(long cross_device_tab_count) {
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.SyncSessions.Recent1HourTabCountAtFirstSyncUpdate",
+      cross_device_tab_count);
+}
+
+void RecordRecent1DayTabCountAtFirstSyncUpdate(long cross_device_tab_count) {
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.SyncSessions.Recent1DayTabCountAtFirstSyncUpdate",
+      cross_device_tab_count);
+}
+
+void RecordTabCountAtSyncUpdate(long cross_device_tab_count) {
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.SyncSessions.RecordTabCountAtSyncUpdate",
+      cross_device_tab_count);
+}
+
 }  // namespace
 
 TabRankDispatcher::TabRankDispatcher(
@@ -29,8 +74,14 @@
     sync_sessions::SessionSyncService* session_sync_service,
     std::unique_ptr<TabFetcher> tab_fetcher)
     : tab_fetcher_(std::move(tab_fetcher)),
+      chrome_startup_timestamp_(base::Time::Now()),
       segmentation_service_(segmentation_service),
-      session_sync_service_(session_sync_service) {}
+      session_sync_service_(session_sync_service) {
+  RecordTabCountAtStartup(
+      tab_fetcher_->GetRemoteTabsCountAfterTime(base::Time()));
+
+  SubscribeToForeignSessionsChanged();
+}
 
 TabRankDispatcher::~TabRankDispatcher() = default;
 
@@ -102,4 +153,44 @@
                 std::move(callback));
 }
 
+void TabRankDispatcher::SubscribeToForeignSessionsChanged() {
+  foreign_session_updated_subscription_ =
+      session_sync_service_->SubscribeToForeignSessionsChanged(
+          base::BindRepeating(&TabRankDispatcher::OnForeignSessionUpdated,
+                              weak_factory_.GetWeakPtr()));
+}
+
+void TabRankDispatcher::OnForeignSessionUpdated() {
+  base::Time foreign_session_updated_time = base::Time::Now();
+  RecordTabCountAtSyncUpdate(
+      tab_fetcher_->GetRemoteTabsCountAfterTime(base::Time()));
+
+  absl::optional<base::Time> sync_session_modified_timestamp =
+      tab_fetcher_->GetLatestRemoteSessionModifiedTime();
+
+  if (!sync_session_modified_timestamp.has_value()) {
+    return;
+  }
+  if (session_updated_counter_ == 0 &&
+      chrome_startup_timestamp_ > sync_session_modified_timestamp.value()) {
+    // Delay Metrics.
+    RecordDelayFromStartupToFirstSyncUpdate(foreign_session_updated_time -
+                                            chrome_startup_timestamp_);
+    // Tab Count Metrics.
+    RecordTabCountFromStartupToSyncUpdate(
+        tab_fetcher_->GetRemoteTabsCountAfterTime(base::Time()));
+    RecordRecent1HourTabCountAtFirstSyncUpdate(
+        tab_fetcher_->GetRemoteTabsCountAfterTime(foreign_session_updated_time -
+                                                  base::Hours(1)));
+    RecordRecent1DayTabCountAtFirstSyncUpdate(
+        tab_fetcher_->GetRemoteTabsCountAfterTime(foreign_session_updated_time -
+                                                  base::Days(1)));
+
+  } else {
+    RecordDelayFromTabLoadToSyncUpdate(foreign_session_updated_time -
+                                       sync_session_modified_timestamp.value());
+  }
+  session_updated_counter_++;
+}
+
 }  // namespace segmentation_platform
diff --git a/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.h b/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.h
index 46b4a17..8256062 100644
--- a/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.h
+++ b/components/segmentation_platform/embedder/input_delegate/tab_rank_dispatcher.h
@@ -80,6 +80,18 @@
                    const AnnotatedNumericResult& result);
 
   const std::unique_ptr<TabFetcher> tab_fetcher_;
+
+  // Subscribes to the sync session changes. SessionSyncService has a repeating
+  // callback to notify of all the session change updates.
+  void SubscribeToForeignSessionsChanged();
+
+  // Called every time when the sync session is updated. Using this to record
+  // few metrics for sync latency and cross device tabs count.
+  void OnForeignSessionUpdated();
+
+  base::Time chrome_startup_timestamp_;
+  int session_updated_counter_{0};
+  base::CallbackListSubscription foreign_session_updated_subscription_;
   const raw_ptr<SegmentationPlatformService> segmentation_service_;
   const raw_ptr<sync_sessions::SessionSyncService> session_sync_service_;
 
diff --git a/components/segmentation_platform/embedder/tab_fetcher.cc b/components/segmentation_platform/embedder/tab_fetcher.cc
index ec85ce9..5cb4630 100644
--- a/components/segmentation_platform/embedder/tab_fetcher.cc
+++ b/components/segmentation_platform/embedder/tab_fetcher.cc
@@ -12,14 +12,17 @@
 namespace segmentation_platform {
 namespace {
 
-void FillTabsFromSessions(
+void FillTabsFromSessionsAfterTime(
     const std::vector<const sync_sessions::SyncedSession*> sessions,
-    std::vector<TabFetcher::TabEntry>& tabs) {
+    std::vector<TabFetcher::TabEntry>& tabs,
+    base::Time tabs_loaded_after_timestamp) {
   for (const auto* session : sessions) {
     for (const auto& session_and_window : session->windows) {
       const auto& window = session_and_window.second->wrapped_window;
       for (const auto& tab : window.tabs) {
-        tabs.emplace_back(tab->tab_id, session->GetSessionTag());
+        if (tab->timestamp >= tabs_loaded_after_timestamp) {
+          tabs.emplace_back(tab->tab_id, session->GetSessionTag());
+        }
       }
     }
   }
@@ -47,7 +50,20 @@
   }
   std::vector<const sync_sessions::SyncedSession*> sessions;
   open_ui_delegate->GetAllForeignSessions(&sessions);
-  FillTabsFromSessions(sessions, tabs);
+  FillTabsFromSessionsAfterTime(sessions, tabs, base::Time());
+  return true;
+}
+
+bool TabFetcher::FillAllRemoteTabsAfterTime(
+    std::vector<TabEntry>& tabs,
+    base::Time tabs_loaded_after_timestamp) {
+  auto* open_ui_delegate = session_sync_service_->GetOpenTabsUIDelegate();
+  if (!open_ui_delegate) {
+    return false;
+  }
+  std::vector<const sync_sessions::SyncedSession*> sessions;
+  open_ui_delegate->GetAllForeignSessions(&sessions);
+  FillTabsFromSessionsAfterTime(sessions, tabs, tabs_loaded_after_timestamp);
   return true;
 }
 
@@ -81,7 +97,7 @@
   if (!local_session) {
     return false;
   }
-  FillTabsFromSessions({local_session}, tabs);
+  FillTabsFromSessionsAfterTime({local_session}, tabs, base::Time());
   return true;
 }
 
@@ -104,4 +120,25 @@
   return base::TimeDelta::Max();
 }
 
+size_t TabFetcher::GetRemoteTabsCountAfterTime(
+    base::Time tabs_loaded_after_timestamp) {
+  std::vector<TabFetcher::TabEntry> all_tabs;
+  FillAllRemoteTabsAfterTime(all_tabs, tabs_loaded_after_timestamp);
+  return all_tabs.size();
+}
+
+absl::optional<base::Time> TabFetcher::GetLatestRemoteSessionModifiedTime() {
+  auto* open_ui_delegate = session_sync_service_->GetOpenTabsUIDelegate();
+  if (!open_ui_delegate) {
+    return absl::nullopt;
+  }
+  std::vector<const sync_sessions::SyncedSession*> sessions;
+  open_ui_delegate->GetAllForeignSessions(&sessions);
+  if (sessions.empty()) {
+    return absl::nullopt;
+  }
+  // Get latest session modified time.
+  return sessions[0]->GetModifiedTime();
+}
+
 }  // namespace segmentation_platform
diff --git a/components/segmentation_platform/embedder/tab_fetcher.h b/components/segmentation_platform/embedder/tab_fetcher.h
index a2697c8..fe58533 100644
--- a/components/segmentation_platform/embedder/tab_fetcher.h
+++ b/components/segmentation_platform/embedder/tab_fetcher.h
@@ -62,6 +62,11 @@
   // Appends a list of all remote tabs to `tabs`.
   bool FillAllRemoteTabs(std::vector<TabEntry>& tabs);
 
+  // Appends a list of all remote tabs to `tabs` loaded after the given
+  // timestamp.
+  bool FillAllRemoteTabsAfterTime(std::vector<TabEntry>& tabs,
+                                  base::Time tabs_loaded_after_timestamp);
+
   // Appends a list of all local tabs to `tabs`.
   bool FillAllLocalTabs(std::vector<TabEntry>& tabs);
 
@@ -72,6 +77,13 @@
   // tab was killed, returns TimeDelta::Max().
   base::TimeDelta GetTimeSinceModified(const TabEntry& tab_entry);
 
+  // Returns the count of remote tabs loaded after the given timestamp till now.
+  size_t GetRemoteTabsCountAfterTime(base::Time tabs_loaded_after_timestamp);
+
+  // Returns the modified time for the latest remote sync session if sync is
+  // enabled.
+  absl::optional<base::Time> GetLatestRemoteSessionModifiedTime();
+
  protected:
   // Fills all the local tabs from the tab models in `tabs`.
   virtual bool FillAllLocalTabsFromTabModel(std::vector<TabEntry>& tabs);
diff --git a/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc b/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc
index c4bc93a..721ee5c 100644
--- a/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc
+++ b/components/subresource_filter/content/browser/navigation_console_logger_unittest.cc
@@ -11,6 +11,7 @@
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/test/navigation_simulator.h"
 #include "content/public/test/test_renderer_host.h"
+#include "content/public/test/test_utils.h"
 #include "net/base/net_errors.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -113,9 +114,13 @@
         navigation->GetNavigationHandle(),
         blink::mojom::ConsoleMessageLevel::kWarning, "foo");
     navigation->Commit();
+    EXPECT_EQ(1u, GetConsoleMessages(main_rfh()).size());
   }
+  content::RenderFrameHostTester::For(main_rfh())->ClearConsoleMessages();
+  EXPECT_TRUE(GetConsoleMessages(main_rfh()).empty());
+
   NavigateAndCommit(GURL("http://example.test/"));
-  EXPECT_EQ(1u, GetConsoleMessages(main_rfh()).size());
+  EXPECT_TRUE(GetConsoleMessages(main_rfh()).empty());
 }
 
 TEST_F(NavigationConsoleLoggerTest, MultipleMessages) {
diff --git a/components/test/data/password_manager/login_db_v35.sql b/components/test/data/password_manager/login_db_v35.sql
new file mode 100644
index 0000000..7a744c5c
--- /dev/null
+++ b/components/test/data/password_manager/login_db_v35.sql
@@ -0,0 +1,174 @@
+BEGIN TRANSACTION;
+CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR);
+INSERT INTO "meta" VALUES('last_compatible_version','33');
+INSERT INTO "meta" VALUES('version','35');
+CREATE TABLE logins (
+origin_url VARCHAR NOT NULL,
+action_url VARCHAR,
+username_element VARCHAR,
+username_value VARCHAR,
+password_element VARCHAR,
+password_value BLOB,
+submit_element VARCHAR,
+signon_realm VARCHAR NOT NULL,
+date_created INTEGER NOT NULL,
+blacklisted_by_user INTEGER NOT NULL,
+scheme INTEGER NOT NULL,
+password_type INTEGER,
+times_used INTEGER,
+form_data BLOB,
+display_name VARCHAR,
+icon_url VARCHAR,
+federation_url VARCHAR,
+skip_zero_click INTEGER,
+generation_upload_status INTEGER,
+possible_username_pairs BLOB,
+id INTEGER PRIMARY KEY AUTOINCREMENT,
+date_last_used INTEGER,
+moving_blocked_for BLOB,
+date_password_modified INTEGER,
+UNIQUE (origin_url, username_element, username_value, password_element, signon_realm));
+INSERT INTO "logins" (origin_url,action_url,username_element,username_value,password_element,password_value,submit_element,signon_realm,date_created,blacklisted_by_user,scheme,password_type,times_used,form_data,display_name,icon_url,federation_url,skip_zero_click,generation_upload_status,possible_username_pairs,date_last_used,moving_blocked_for,date_password_modified) VALUES(
+'https://accounts.google.com/ServiceLogin', /* origin_url */
+'https://accounts.google.com/ServiceLoginAuth', /* action_url */
+'Email', /* username_element */
+'theerikchen', /* username_value */
+'Passwd', /* password_element */
+X'', /* password_value */
+'', /* submit_element */
+'https://accounts.google.com/', /* signon_realm */
+13047429345000000, /* date_created */
+0, /* blacklisted_by_user */
+0, /* scheme */
+0, /* password_type */
+1, /* times_used */
+X'18000000020000000000000000000000000000000000000000000000', /* form_data */
+'', /* display_name */
+'', /* icon_url */
+'', /* federation_url */
+1,  /* skip_zero_click */
+0,  /* generation_upload_status */
+X'00000000', /* possible_username_pairs */
+0, /* date_last_used */
+X'', /* moving_blocked_for */
+0 /* date_password_modified */
+);
+INSERT INTO "logins" (origin_url,action_url,username_element,username_value,password_element,password_value,submit_element,signon_realm,date_created,blacklisted_by_user,scheme,password_type,times_used,form_data,display_name,icon_url,federation_url,skip_zero_click,generation_upload_status,possible_username_pairs,date_last_used,moving_blocked_for,date_password_modified) VALUES(
+'https://accounts.google.com/ServiceLogin', /* origin_url */
+'https://accounts.google.com/ServiceLoginAuth', /* action_url */
+'Email', /* username_element */
+'theerikchen2', /* username_value */
+'Passwd', /* password_element */
+X'', /* password_value */
+'non-empty', /* submit_element */
+'https://accounts.google.com/', /* signon_realm */
+13047423600000000, /* date_created */
+0, /* blacklisted_by_user */
+0, /* scheme */
+0, /* password_type */
+1, /* times_used */
+X'18000000020000000000000000000000000000000000000000000000', /* form_data */
+'', /* display_name */
+'https://www.google.com/icon', /* icon_url */
+'', /* federation_url */
+1,  /* skip_zero_click */
+0,  /* generation_upload_status */
+X'00000000', /* possible_username_pairs */
+0, /* date_last_used */
+X'2400000020000000931DDD1C53CCD2CE11C30C3027798FF7E31CCFE83FB086F3A7797F404D647332', /* moving_blocked_for */
+13047423610000000 /* date_password_modified */
+);
+INSERT INTO "logins" (origin_url,action_url,username_element,username_value,password_element,password_value,submit_element,signon_realm,date_created,blacklisted_by_user,scheme,password_type,times_used,form_data,display_name,icon_url,federation_url,skip_zero_click,generation_upload_status,possible_username_pairs,date_last_used,moving_blocked_for,date_password_modified) VALUES(
+'http://example.com', /* origin_url */
+'http://example.com/landing', /* action_url */
+'', /* username_element */
+'user', /* username_value */
+'', /* password_element */
+X'', /* password_value */
+'non-empty', /* submit_element */
+'http://example.com', /* signon_realm */
+13047423600000000, /* date_created */
+0, /* blacklisted_by_user */
+1, /* scheme */
+0, /* password_type */
+1, /* times_used */
+X'18000000020000000000000000000000000000000000000000000000', /* form_data */
+'', /* display_name */
+'https://www.google.com/icon', /* icon_url */
+'', /* federation_url */
+1,  /* skip_zero_click */
+0,  /* generation_upload_status */
+X'00000000', /* possible_username_pairs */
+0, /* date_last_used */
+X'', /* moving_blocked_for */
+13047423610000000 /* date_password_modified */
+);
+CREATE INDEX logins_signon ON logins (signon_realm);
+CREATE TABLE stats (
+origin_domain VARCHAR NOT NULL,
+username_value VARCHAR,
+dismissal_count INTEGER,
+update_time INTEGER NOT NULL,
+UNIQUE(origin_domain, username_value));
+CREATE INDEX stats_origin ON stats(origin_domain);
+CREATE TABLE sync_entities_metadata (
+  storage_key INTEGER PRIMARY KEY AUTOINCREMENT,
+  metadata VARCHAR NOT NULL
+);
+CREATE TABLE sync_model_metadata (
+  id INTEGER PRIMARY KEY AUTOINCREMENT,
+  metadata VARCHAR NOT NULL
+);
+CREATE TABLE insecure_credentials (
+parent_id INTEGER REFERENCES logins ON UPDATE CASCADE ON DELETE CASCADE
+  DEFERRABLE INITIALLY DEFERRED,
+insecurity_type INTEGER NOT NULL,
+create_time INTEGER NOT NULL,
+is_muted INTEGER NOT NULL DEFAULT 0,
+trigger_notification_from_backend INTEGER NOT NULL DEFAULT 0,
+UNIQUE (parent_id, insecurity_type));
+CREATE INDEX foreign_key_index ON insecure_credentials (parent_id);
+INSERT INTO "insecure_credentials"
+  (parent_id,insecurity_type,create_time,is_muted,trigger_notification_from_backend) VALUES(
+1, /* parent_id */
+0, /* compromise_type */
+13047423600000000, /* create_time */
+0, /* is_muted */
+0 /* trigger_notification_from_backend */
+);
+INSERT INTO "insecure_credentials"
+  (parent_id,insecurity_type,create_time,is_muted, trigger_notification_from_backend) VALUES(
+1, /* parent_id */
+1, /* compromise_type */
+13047423600000000, /* create_time */
+0, /* is_muted */
+0 /* trigger_notification_from_backend */
+);
+CREATE TABLE password_notes (
+  id INTEGER PRIMARY KEY AUTOINCREMENT,
+  parent_id INTEGER NOT NULL REFERENCES logins ON UPDATE CASCADE
+    ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+  key VARCHAR NOT NULL,
+  value BLOB,
+  date_created INTEGER NOT NULL,
+  confidential BOOL,
+  UNIQUE (parent_id, key)
+);
+CREATE INDEX foreign_key_index_notes ON password_notes (parent_id);
+INSERT INTO "password_notes"
+  (parent_id, key, value, date_created, confidential) VALUES(
+1, /* parent_id */
+'', /* key */
+X'', /* value */
+13047423600000000, /* date_created */
+0 /* confidential */
+);
+CREATE TABLE incoming_sharing_invitation_sync_entities_metadata (
+  storage_key INTEGER PRIMARY KEY AUTOINCREMENT,
+  metadata VARCHAR NOT NULL
+);
+CREATE TABLE incoming_sharing_invitation_sync_model_metadata (
+  id INTEGER PRIMARY KEY AUTOINCREMENT,
+  metadata VARCHAR NOT NULL
+);
+COMMIT;
diff --git a/components/test/data/password_manager/unit_tests_bundle_data.filelist b/components/test/data/password_manager/unit_tests_bundle_data.filelist
index 8833d4b..d95b8964 100644
--- a/components/test/data/password_manager/unit_tests_bundle_data.filelist
+++ b/components/test/data/password_manager/unit_tests_bundle_data.filelist
@@ -50,6 +50,7 @@
 //components/test/data/password_manager/login_db_v32.sql
 //components/test/data/password_manager/login_db_v33.sql
 //components/test/data/password_manager/login_db_v34.sql
+//components/test/data/password_manager/login_db_v35.sql
 //components/test/data/password_manager/login_db_v3_broken.sql
 //components/test/data/password_manager/login_db_v4.sql
 //components/test/data/password_manager/login_db_v5.sql
diff --git a/components/user_education/common/help_bubble_factory_registry.cc b/components/user_education/common/help_bubble_factory_registry.cc
index 55d1082..6448c2327 100644
--- a/components/user_education/common/help_bubble_factory_registry.cc
+++ b/components/user_education/common/help_bubble_factory_registry.cc
@@ -60,19 +60,12 @@
   for (const auto& pr : help_bubbles_) {
     if (pr.first->GetContext() == context &&
         pr.first->ToggleFocusForAccessibility()) {
-      toggle_focus_callbacks_.Notify(pr.first);
       return true;
     }
   }
   return false;
 }
 
-base::CallbackListSubscription
-HelpBubbleFactoryRegistry::AddToggleFocusCallback(
-    ToggleFocusCallback callback) {
-  return toggle_focus_callbacks_.Add(std::move(callback));
-}
-
 HelpBubble* HelpBubbleFactoryRegistry::GetHelpBubble(
     ui::ElementContext context) {
   for (const auto& pr : help_bubbles_) {
diff --git a/components/user_education/common/help_bubble_factory_registry.h b/components/user_education/common/help_bubble_factory_registry.h
index 947427b..76b9bc0 100644
--- a/components/user_education/common/help_bubble_factory_registry.h
+++ b/components/user_education/common/help_bubble_factory_registry.h
@@ -25,8 +25,6 @@
 // that instances can be created multiple times in a test environment.
 class HelpBubbleFactoryRegistry {
  public:
-  using ToggleFocusCallback = base::RepeatingCallback<void(HelpBubble*)>;
-
   HelpBubbleFactoryRegistry();
   ~HelpBubbleFactoryRegistry();
   HelpBubbleFactoryRegistry(const HelpBubbleFactoryRegistry&) = delete;
@@ -51,10 +49,6 @@
   // bubble or nothing can be focused.
   bool ToggleFocusForAccessibility(ui::ElementContext context);
 
-  // Listens for ToggleFocusForAccessibility() calls for metrics purposes.
-  base::CallbackListSubscription AddToggleFocusCallback(
-      ToggleFocusCallback callback);
-
   // Gets the first visible help bubble in the given context, or null if none
   // exists.
   HelpBubble* GetHelpBubble(ui::ElementContext context);
@@ -74,10 +68,6 @@
 
   // The list of known help bubbles.
   std::map<HelpBubble*, base::CallbackListSubscription> help_bubbles_;
-
-  // For listening
-  base::RepeatingCallbackList<typename ToggleFocusCallback::RunType>
-      toggle_focus_callbacks_;
 };
 
 }  // namespace user_education
diff --git a/components/user_education/common/tutorial_service.cc b/components/user_education/common/tutorial_service.cc
index c5045cd..fde1ebc 100644
--- a/components/user_education/common/tutorial_service.cc
+++ b/components/user_education/common/tutorial_service.cc
@@ -40,12 +40,7 @@
     TutorialRegistry* tutorial_registry,
     HelpBubbleFactoryRegistry* help_bubble_factory_registry)
     : tutorial_registry_(tutorial_registry),
-      help_bubble_factory_registry_(help_bubble_factory_registry) {
-  toggle_focus_subscription_ =
-      help_bubble_factory_registry->AddToggleFocusCallback(
-          base::BindRepeating(&TutorialService::OnFocusToggledForAccessibility,
-                              base::Unretained(this)));
-}
+      help_bubble_factory_registry_(help_bubble_factory_registry) {}
 
 TutorialService::~TutorialService() = default;
 
@@ -91,7 +86,6 @@
 
   // Start the tutorial and mark the params used to created it for restarting.
   running_tutorial_->Start();
-  toggle_focus_count_ = 0;
 }
 
 void TutorialService::LogIPHLinkClicked(TutorialIdentifier id,
@@ -171,12 +165,6 @@
   // Reset the tutorial and call the external abort callback.
   ResetRunningTutorial();
 
-  // Record how many times the user toggled focus during the tutorial using
-  // the keyboard.
-  UMA_HISTOGRAM_CUSTOM_COUNTS("Tutorial.FocusToggleCount.Aborted",
-                              toggle_focus_count_, 0, 50, 6);
-  toggle_focus_count_ = 0;
-
   if (aborted_callback_) {
     std::move(aborted_callback_).Run();
   }
@@ -207,12 +195,6 @@
 
   ResetRunningTutorial();
 
-  // Record how many times the user toggled focus during the tutorial using
-  // the keyboard.
-  UMA_HISTOGRAM_CUSTOM_COUNTS("Tutorial.FocusToggleCount.Completed",
-                              toggle_focus_count_, 0, 50, 6);
-  toggle_focus_count_ = 0;
-
   std::move(completed_callback_).Run();
 }
 
@@ -257,11 +239,6 @@
   HideCurrentBubbleIfShowing();
 }
 
-void TutorialService::OnFocusToggledForAccessibility(HelpBubble* bubble) {
-  if (bubble == currently_displayed_bubble_.get())
-    ++toggle_focus_count_;
-}
-
 void TutorialService::OnBrokenTutorial() {
   if (running_tutorial_ && !currently_displayed_bubble_) {
     running_tutorial_->Abort();
diff --git a/components/user_education/common/tutorial_service.h b/components/user_education/common/tutorial_service.h
index b9151c6..527c62b 100644
--- a/components/user_education/common/tutorial_service.h
+++ b/components/user_education/common/tutorial_service.h
@@ -107,9 +107,6 @@
   // Reset all of the running tutorial member variables.
   void ResetRunningTutorial();
 
-  // Tracks when the user toggles focus to a help bubble via the keyboard.
-  void OnFocusToggledForAccessibility(HelpBubble* bubble);
-
   // Called when there has been no bubble visible for enough time that the
   // current tutorial should probably be aborted.
   void OnBrokenTutorial();
@@ -152,10 +149,6 @@
   const raw_ptr<TutorialRegistry> tutorial_registry_;
   const raw_ptr<HelpBubbleFactoryRegistry> help_bubble_factory_registry_;
 
-  // Number of times focus was toggled during the current tutorial.
-  int toggle_focus_count_ = 0;
-  base::CallbackListSubscription toggle_focus_subscription_;
-
   // status bit to denote that the tutorial service is in the process of
   // restarting a tutorial. This prevents calling the abort callbacks.
   bool is_restarting_ = false;
diff --git a/components/vector_icons/BUILD.gn b/components/vector_icons/BUILD.gn
index fdb957d4..5d46a145 100644
--- a/components/vector_icons/BUILD.gn
+++ b/components/vector_icons/BUILD.gn
@@ -146,13 +146,9 @@
     "privacy_sandbox.icon",
     "protected_content.icon",
     "protocol_handler.icon",
-    "qr_code.icon",
     "reload.icon",
     "reload_chrome_refresh.icon",
     "replay.icon",
-    "save_original_file.icon",
-    "save_original_file_chrome_refresh.icon",
-    "save_original_file_off_chrome_refresh.icon",
     "screen_share.icon",
     "search.icon",
     "search_chrome_refresh.icon",
diff --git a/components/vector_icons/qr_code.icon b/components/vector_icons/qr_code.icon
deleted file mode 100644
index 778a5af..0000000
--- a/components/vector_icons/qr_code.icon
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-CANVAS_DIMENSIONS, 20,
-MOVE_TO, 2.5f, 9.13f,
-V_LINE_TO, 2.5f,
-R_H_LINE_TO, 6.63f,
-R_V_LINE_TO, 6.63f,
-CLOSE,
-R_MOVE_TO, 1.75f, -1.75f,
-R_H_LINE_TO, 3.13f,
-V_LINE_TO, 4.25f,
-H_LINE_TO, 4.25f,
-CLOSE,
-MOVE_TO, 2.5f, 17.5f,
-R_V_LINE_TO, -6.62f,
-R_H_LINE_TO, 6.63f,
-V_LINE_TO, 17.5f,
-CLOSE,
-R_MOVE_TO, 1.75f, -1.75f,
-R_H_LINE_TO, 3.17f,
-R_V_LINE_TO, -3.12f,
-H_LINE_TO, 4.25f,
-CLOSE,
-R_MOVE_TO, 6.63f, -6.62f,
-V_LINE_TO, 2.5f,
-H_LINE_TO, 17.5f,
-R_V_LINE_TO, 6.63f,
-CLOSE,
-R_MOVE_TO, 1.75f, -1.75f,
-R_H_LINE_TO, 3.13f,
-V_LINE_TO, 4.25f,
-R_H_LINE_TO, -3.12f,
-CLOSE,
-MOVE_TO, 15.85f, 17.5f,
-R_V_LINE_TO, -1.67f,
-H_LINE_TO, 17.5f,
-V_LINE_TO, 17.5f,
-CLOSE,
-R_MOVE_TO, -4.98f, -4.98f,
-R_V_LINE_TO, -1.65f,
-R_H_LINE_TO, 1.67f,
-R_V_LINE_TO, 1.65f,
-CLOSE,
-R_MOVE_TO, 1.67f, 1.65f,
-R_V_LINE_TO, -1.65f,
-R_H_LINE_TO, 1.67f,
-R_V_LINE_TO, 1.65f,
-CLOSE,
-R_MOVE_TO, -1.67f, 1.67f,
-R_V_LINE_TO, -1.67f,
-R_H_LINE_TO, 1.67f,
-R_V_LINE_TO, 1.67f,
-CLOSE,
-R_MOVE_TO, 1.67f, 1.67f,
-R_V_LINE_TO, -1.67f,
-R_H_LINE_TO, 1.67f,
-V_LINE_TO, 17.5f,
-CLOSE,
-R_MOVE_TO, 1.67f, -1.67f,
-R_V_LINE_TO, -1.67f,
-R_H_LINE_TO, 1.65f,
-R_V_LINE_TO, 1.67f,
-CLOSE,
-R_MOVE_TO, 0, -3.31f,
-R_V_LINE_TO, -1.65f,
-R_H_LINE_TO, 1.65f,
-R_V_LINE_TO, 1.65f,
-CLOSE,
-R_MOVE_TO, 1.65f, 1.65f,
-R_V_LINE_TO, -1.65f,
-H_LINE_TO, 17.5f,
-R_V_LINE_TO, 1.65f,
-CLOSE
\ No newline at end of file
diff --git a/components/viz/service/display/surface_aggregator.cc b/components/viz/service/display/surface_aggregator.cc
index 924ff1f..2d2a54a 100644
--- a/components/viz/service/display/surface_aggregator.cc
+++ b/components/viz/service/display/surface_aggregator.cc
@@ -838,20 +838,7 @@
                     frame.device_scale_factor(), gfx::Transform(), {},
                     dest_root_target_clip_rect, surface, MaskFilterInfoExt());
 
-    // If the render pass has copy requests, or should be cached, or has
-    // moving-pixel filters, or in a moving-pixel surface, we should damage the
-    // whole output rect so that we always drawn the full content. Otherwise, we
-    // might have incompleted copy request, or cached patially drawn render
-    // pass.
-    if (!RenderPassNeedsFullDamage(resolved_pass)) {
-      gfx::Transform inverse_transform;
-      if (copy_pass->transform_to_root_target.GetInverse(&inverse_transform)) {
-        gfx::Rect damage_rect_in_render_pass_space =
-            cc::MathUtil::ProjectEnclosingClippedRect(inverse_transform,
-                                                      root_damage_rect_);
-        copy_pass->damage_rect.Intersect(damage_rect_in_render_pass_space);
-      }
-    }
+    SetRenderPassDamageRect(copy_pass.get(), resolved_pass);
 
     dest_pass_list_->push_back(std::move(copy_pass));
   }
@@ -1453,20 +1440,8 @@
                     {}, /*dest_root_target_clip_rect=*/{}, surface,
                     MaskFilterInfoExt());
 
-    // If the render pass has copy requests, or should be cached, or has
-    // moving-pixel filters, or in a moving-pixel surface, we should damage the
-    // whole output rect so that we always drawn the full content. Otherwise, we
-    // might have incompleted copy request, or cached patially drawn render
-    // pass.
-    if (!RenderPassNeedsFullDamage(resolved_pass)) {
-      gfx::Transform inverse_transform;
-      if (copy_pass->transform_to_root_target.GetInverse(&inverse_transform)) {
-        gfx::Rect damage_rect_in_render_pass_space =
-            cc::MathUtil::ProjectEnclosingClippedRect(inverse_transform,
-                                                      root_damage_rect_);
-        copy_pass->damage_rect.Intersect(damage_rect_in_render_pass_space);
-      }
-    }
+    SetRenderPassDamageRect(copy_pass.get(), resolved_pass);
+
     dest_pass_list_->push_back(std::move(copy_pass));
   }
 
@@ -1474,6 +1449,35 @@
     AddDisplayTransformPass();
 }
 
+void SurfaceAggregator::SetRenderPassDamageRect(
+    AggregatedRenderPass* copy_pass,
+    const ResolvedPassData& resolved_pass) {
+  // If the render pass has copy requests, or should be cached, or has
+  // moving-pixel filters, or in a moving-pixel surface, we should damage the
+  // whole output rect so that we always drawn the full content. Otherwise, we
+  // might have incompleted copy request, or cached patially drawn render
+  // pass.
+
+  if (!RenderPassNeedsFullDamage(resolved_pass)) {
+    gfx::Transform inverse_transform;
+    if (copy_pass->transform_to_root_target.GetInverse(&inverse_transform)) {
+      gfx::Rect damage_rect_in_render_pass_space =
+          cc::MathUtil::ProjectEnclosingClippedRect(inverse_transform,
+                                                    root_damage_rect_);
+      copy_pass->damage_rect.Intersect(damage_rect_in_render_pass_space);
+    }
+
+    // For unembeded render passes, their damages were not added to the
+    // root render pass. Add back the original damage from cc so it can be
+    // skipped later when there is no internal damage.
+    static const bool can_skip_render_pass = base::FeatureList::IsEnabled(
+        features::kAllowUndamagedNonrootRenderPassToSkip);
+    if (resolved_pass.IsUnembedded() && can_skip_render_pass) {
+      copy_pass->damage_rect.Union(resolved_pass.render_pass().damage_rect);
+    }
+  }
+}
+
 void SurfaceAggregator::ProcessAddedAndRemovedSurfaces() {
   // Delete resolved frame data that wasn't used this aggregation. This releases
   // resources associated with those resolved frames.
diff --git a/components/viz/service/display/surface_aggregator.h b/components/viz/service/display/surface_aggregator.h
index 51ae2e9..1abec0a1 100644
--- a/components/viz/service/display/surface_aggregator.h
+++ b/components/viz/service/display/surface_aggregator.h
@@ -336,6 +336,9 @@
   // Resets member variables that were used during Aggregate().
   void ResetAfterAggregate();
 
+  void SetRenderPassDamageRect(AggregatedRenderPass* copy_pass,
+                               const ResolvedPassData& resolved_pass);
+
   const raw_ptr<SurfaceManager> manager_;
   const raw_ptr<DisplayResourceProvider> provider_;
 
diff --git a/content/browser/accessibility/ax_platform_node_textprovider_win_browsertest.cc b/content/browser/accessibility/ax_platform_node_textprovider_win_browsertest.cc
index d4e1ced..5320d49 100644
--- a/content/browser/accessibility/ax_platform_node_textprovider_win_browsertest.cc
+++ b/content/browser/accessibility/ax_platform_node_textprovider_win_browsertest.cc
@@ -281,4 +281,39 @@
   text_provider_ranges.Reset();
 }
 
+IN_PROC_BROWSER_TEST_F(AXPlatformNodeTextProviderWinBrowserTest, GetVisibleRangesRefCount) {
+  LoadInitialAccessibilityTreeFromHtml(std::string(R"HTML(
+      <!DOCTYPE html>
+      <html>
+        <body>
+            hello
+        </body>
+      </html>
+  )HTML"));
+
+  auto* text_node = FindNode(ax::mojom::Role::kStaticText, "hello");
+  ASSERT_NE(nullptr, text_node);
+
+  ComPtr<ITextProvider> text_provider;
+  GetTextProviderFromTextNode(text_provider, text_node);
+
+  base::win::ScopedSafearray visible_ranges;
+  EXPECT_HRESULT_SUCCEEDED(
+      text_provider->GetVisibleRanges(visible_ranges.Receive()));
+  ASSERT_UIA_SAFEARRAY_OF_TEXTRANGEPROVIDER(visible_ranges.Get(), 1U);
+
+  LONG index = 0;
+  ComPtr<ITextRangeProvider> text_range_provider;
+  EXPECT_HRESULT_SUCCEEDED(SafeArrayGetElement(
+      visible_ranges.Get(), &index, static_cast<void**>(&text_range_provider)));
+
+  // Validate that there was only one reference to the `text_range_provider`.
+  ASSERT_EQ(1U, text_range_provider->Release());
+
+  // This is needed to avoid calling SafeArrayDestroy from SafeArray's dtor when
+  // exiting the scope, which would crash trying to release the already
+  // destroyed `text_range_provider`.
+  visible_ranges.Release();
+}
+
 }  // namespace content
diff --git a/content/browser/attribution_reporting/attribution_host_unittest.cc b/content/browser/attribution_reporting/attribution_host_unittest.cc
index 877ee3e..8200456 100644
--- a/content/browser/attribution_reporting/attribution_host_unittest.cc
+++ b/content/browser/attribution_reporting/attribution_host_unittest.cc
@@ -125,7 +125,7 @@
         static_cast<RenderFrameHostImpl*>(fenced_frame)->frame_tree_node();
     absl::optional<FencedFrameProperties> new_props =
         fenced_frame_node->GetFencedFrameProperties();
-    new_props->required_permissions_to_load.push_back(
+    new_props->effective_enabled_permissions.push_back(
         blink::mojom::PermissionsPolicyFeature::kAttributionReporting);
     fenced_frame_node->set_fenced_frame_properties(new_props);
   }
diff --git a/content/browser/attribution_reporting/attribution_os_level_manager.cc b/content/browser/attribution_reporting/attribution_os_level_manager.cc
index 343a6b2..9a82729 100644
--- a/content/browser/attribution_reporting/attribution_os_level_manager.cc
+++ b/content/browser/attribution_reporting/attribution_os_level_manager.cc
@@ -61,6 +61,13 @@
 }
 
 // static
+bool AttributionOsLevelManager::ShouldUseOsWebSource() {
+  return GetContentClient()
+      ->browser()
+      ->ShouldUseOsWebSourceAttributionReporting();
+}
+
+// static
 bool AttributionOsLevelManager::ShouldInitializeApiState() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(GetSequenceChecker());
   if (g_state.has_value()) {
diff --git a/content/browser/attribution_reporting/attribution_os_level_manager.h b/content/browser/attribution_reporting/attribution_os_level_manager.h
index e74a61d6..533f8a9 100644
--- a/content/browser/attribution_reporting/attribution_os_level_manager.h
+++ b/content/browser/attribution_reporting/attribution_os_level_manager.h
@@ -74,6 +74,7 @@
 
  protected:
   [[nodiscard]] static bool ShouldInitializeApiState();
+  [[nodiscard]] static bool ShouldUseOsWebSource();
 };
 
 class CONTENT_EXPORT NoOpAttributionOsLevelManager
diff --git a/content/browser/attribution_reporting/attribution_os_level_manager_android.cc b/content/browser/attribution_reporting/attribution_os_level_manager_android.cc
index 920e879..84046ad 100644
--- a/content/browser/attribution_reporting/attribution_os_level_manager_android.cc
+++ b/content/browser/attribution_reporting/attribution_os_level_manager_android.cc
@@ -122,12 +122,18 @@
   switch (registration.GetType()) {
     case attribution_reporting::mojom::OsRegistrationType::kSource:
       DCHECK(registration.input_event.has_value());
-      Java_AttributionOsLevelManager_registerAttributionSource(
-          env, jobj_, request_id, registration_url, top_level_origin,
-          is_debug_key_allowed, registration.input_event->input_event);
+      if (AttributionOsLevelManager::ShouldUseOsWebSource()) {
+        Java_AttributionOsLevelManager_registerWebAttributionSource(
+            env, jobj_, request_id, registration_url, top_level_origin,
+            is_debug_key_allowed, registration.input_event->input_event);
+      } else {
+        Java_AttributionOsLevelManager_registerAttributionSource(
+            env, jobj_, request_id, registration_url,
+            registration.input_event->input_event);
+      }
       break;
     case attribution_reporting::mojom::OsRegistrationType::kTrigger:
-      Java_AttributionOsLevelManager_registerAttributionTrigger(
+      Java_AttributionOsLevelManager_registerWebAttributionTrigger(
           env, jobj_, request_id, registration_url, top_level_origin,
           is_debug_key_allowed);
       break;
diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc
index 1eee468..28356be 100644
--- a/content/browser/client_hints/client_hints.cc
+++ b/content/browser/client_hints/client_hints.cc
@@ -588,7 +588,7 @@
           frame_tree_node->GetFencedFrameProperties();
       base::span<const blink::mojom::PermissionsPolicyFeature> permissions;
       if (fenced_frame_properties) {
-        permissions = fenced_frame_properties->required_permissions_to_load;
+        permissions = fenced_frame_properties->effective_enabled_permissions;
       }
       permissions_policy = blink::PermissionsPolicy::CreateForFencedFrame(
           resource_origin, permissions);
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
index a46d517..72eb7a1 100644
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -604,6 +604,8 @@
       .SetPushStart(
           timeDelta(load_timing.push_start, load_timing.request_start, 0))
       .SetPushEnd(timeDelta(load_timing.push_end, load_timing.request_start, 0))
+      .SetReceiveHeadersStart(timeDelta(load_timing.receive_headers_start,
+                                        load_timing.request_start))
       .SetReceiveHeadersEnd(
           timeDelta(load_timing.receive_headers_end, load_timing.request_start))
       .Build();
diff --git a/content/browser/fenced_frame/fenced_frame_config.cc b/content/browser/fenced_frame/fenced_frame_config.cc
index cc617c1..8332fb8 100644
--- a/content/browser/fenced_frame/fenced_frame_config.cc
+++ b/content/browser/fenced_frame/fenced_frame_config.cc
@@ -177,7 +177,8 @@
   // was called to generate the config, rather than any cross-site data.
   redacted_config.mode_ = mode_;
 
-  redacted_config.required_permissions_to_load_ = required_permissions_to_load;
+  redacted_config.effective_enabled_permissions_ =
+      effective_enabled_permissions;
 
   return redacted_config;
 }
@@ -210,7 +211,7 @@
                        VisibilityToContent::kOpaque),
       mode_(config.mode_),
       is_ad_component_(config.is_ad_component_),
-      required_permissions_to_load(config.required_permissions_to_load) {
+      effective_enabled_permissions(config.effective_enabled_permissions) {
   if (config.shared_storage_budget_metadata_) {
     shared_storage_budget_metadata_.emplace(
         &config.shared_storage_budget_metadata_->GetValueIgnoringVisibility(),
@@ -280,10 +281,12 @@
     }
   }
 
-  if (fenced_frame_reporter_ || is_ad_component_) {
+  if ((fenced_frame_reporter_ || is_ad_component_) &&
+      entity != FencedFrameEntity::kCrossOriginContent) {
     // An ad component should use its parent's fenced frame reporter. Even
     // though it does not have a reporter in its `FencedFrameProperties`, this
-    // flag is still marked as true.
+    // flag is still marked as true. Content that is cross-origin to the
+    // config's mapped url will not get access to its parent's reporter.
     redacted_properties.has_fenced_frame_reporting_ = true;
   }
 
@@ -291,8 +294,8 @@
   // was called to generate the config, rather than any cross-site data.
   redacted_properties.mode_ = mode_;
 
-  redacted_properties.required_permissions_to_load_ =
-      required_permissions_to_load;
+  redacted_properties.effective_enabled_permissions_ =
+      effective_enabled_permissions;
 
   return redacted_properties;
 }
diff --git a/content/browser/fenced_frame/fenced_frame_config.h b/content/browser/fenced_frame/fenced_frame_config.h
index 21ccd59e..95fc8c0 100644
--- a/content/browser/fenced_frame/fenced_frame_config.h
+++ b/content/browser/fenced_frame/fenced_frame_config.h
@@ -17,7 +17,10 @@
 // using the `FencedFrameEntity` enum:
 // * `kEmbedder`: the renderer process that embeds the fenced frame and calls
 //   the config-generating API
-// * `kContent`: the renderer process for the fenced frame content
+// * `kSameOriginContent`: the renderer process for the fenced frame content,
+//   if the fenced frame content is same-origin to the config's mapped url
+// * `kCrossOriginContent`: the renderer process for the fenced frame content,
+//   if the fenced frame content is cross-origin to the config's mapped url
 //
 // When a config-generating API constructs a config, for each field in the
 // config it must specify whether the field is opaque or transparent to
@@ -57,8 +60,8 @@
 //   the browser, e.g. the partition nonce for network requests.
 // * Upon navigation commit, the browser constructs a
 //   `RedactedFencedFrameProperties` from the `FencedFrameProperties` and the
-//   `kContent` entity. The constructor automatically performs the redaction
-//   process.
+//   `kSameOriginContent` or `kCrossOriginContent` entity. The constructor
+//   automatically performs the redaction process.
 //
 // Note: Because configs may contain nested configs (to be loaded into nested
 // fenced frames), the redaction process may recurse in order to redact these
@@ -124,12 +127,13 @@
   // The document that embeds a fenced frame.
   kEmbedder,
 
-  // The document inside a fenced frame. (Currently, this only applies to the
-  // very first document resulting from a urn navigation, not any subsequent
-  // navigations originating inside the fenced frame or affecting subframes.
-  // These other documents receive no visibility into the fenced frame
-  // config.)
-  kContent,
+  // The document inside a fenced frame whose origin matches the fenced frame's
+  // mapped URL.
+  kSameOriginContent,
+
+  // The document inside a fenced frame whose origin doesn't match the fenced
+  // frame's mapped URL.
+  kCrossOriginContent,
 };
 
 // Visibility levels specify whether information should be redacted when it is
@@ -187,7 +191,12 @@
         }
         break;
       }
-      case FencedFrameEntity::kContent: {
+      case FencedFrameEntity::kCrossOriginContent: {
+        // For now, content that is cross-origin to the mapped URL does not get
+        // access to any of the redacted properties in the config.
+        return absl::nullopt;
+      }
+      case FencedFrameEntity::kSameOriginContent: {
         if (visibility_to_content_ == VisibilityToContent::kOpaque) {
           return absl::nullopt;
         }
@@ -312,11 +321,12 @@
   // frames, such as FLEDGE and Shared Storage, require certain features to be
   // enabled in the frame's permissions policy, but they cannot be set directly
   // by the embedder since that opens a communication channel. The API that
-  // constructs the config will set this directly.
+  // constructs the config will set this directly. These permissions will be the
+  // only ones enabled in the fenced frame once it navigates.
   // See entry in spec:
   // https://wicg.github.io/fenced-frame/#fenced-frame-config-effective-enabled-permissions
   std::vector<blink::mojom::PermissionsPolicyFeature>
-      required_permissions_to_load;
+      effective_enabled_permissions;
 };
 
 // Contains a set of fenced frame properties. These are generated at
@@ -441,11 +451,12 @@
   // frames, such as FLEDGE and Shared Storage, require certain features to be
   // enabled in the frame's permissions policy, but they cannot be set directly
   // by the embedder since that opens a communication channel. The API that
-  // constructs the config will set this directly.
+  // constructs the config will set this directly. These permissions will be the
+  // only ones enabled in the fenced frame once it navigates.
   // See entry in spec:
   // https://wicg.github.io/fenced-frame/#fenced-frame-config-effective-enabled-permissions
   std::vector<blink::mojom::PermissionsPolicyFeature>
-      required_permissions_to_load;
+      effective_enabled_permissions;
 };
 
 }  // namespace content
diff --git a/content/browser/fenced_frame/fenced_frame_url_mapping.cc b/content/browser/fenced_frame/fenced_frame_url_mapping.cc
index 3e2b8a55..edaab27 100644
--- a/content/browser/fenced_frame/fenced_frame_url_mapping.cc
+++ b/content/browser/fenced_frame/fenced_frame_url_mapping.cc
@@ -175,12 +175,12 @@
       true, VisibilityToEmbedder::kTransparent, VisibilityToContent::kOpaque);
   // We don't know at this point if the test being run needs the FLEDGE or
   // Shared Storage permissions set. To be safe, we set both here.
-  config.required_permissions_to_load.insert(
-      config.required_permissions_to_load.end(),
+  config.effective_enabled_permissions.insert(
+      config.effective_enabled_permissions.end(),
       std::begin(blink::kFencedFrameFledgeDefaultRequiredFeatures),
       std::end(blink::kFencedFrameFledgeDefaultRequiredFeatures));
-  config.required_permissions_to_load.insert(
-      config.required_permissions_to_load.end(),
+  config.effective_enabled_permissions.insert(
+      config.effective_enabled_permissions.end(),
       std::begin(blink::kFencedFrameSharedStorageDefaultRequiredFeatures),
       std::end(blink::kFencedFrameSharedStorageDefaultRequiredFeatures));
   return urn;
@@ -254,7 +254,7 @@
                                   VisibilityToContent::kOpaque);
   config.on_navigate_callback_ = std::move(on_navigate_callback);
 
-  config.required_permissions_to_load =
+  config.effective_enabled_permissions =
       std::vector<blink::mojom::PermissionsPolicyFeature>(
           std::begin(blink::kFencedFrameFledgeDefaultRequiredFeatures),
           std::end(blink::kFencedFrameFledgeDefaultRequiredFeatures));
@@ -364,7 +364,7 @@
                                mapping_result.budget_metadata,
                                std::move(mapping_result.fenced_frame_reporter));
     config->mode_ = blink::FencedFrame::DeprecatedFencedFrameMode::kOpaqueAds;
-    config->required_permissions_to_load = {
+    config->effective_enabled_permissions = {
         std::begin(blink::kFencedFrameSharedStorageDefaultRequiredFeatures),
         std::end(blink::kFencedFrameSharedStorageDefaultRequiredFeatures)};
 
diff --git a/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc b/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc
index 80c9d358..56ce9e13 100644
--- a/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc
+++ b/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc
@@ -193,8 +193,12 @@
       unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
   TestPropertyForEntityIsDefinedIsOpaque<ClassName, RedactedClassName, TestType,
                                          RedactedTestType>(
-      config, property, redacted_property, Entity::kContent, false, false,
-      unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
+      config, property, redacted_property, Entity::kSameOriginContent, false,
+      false, unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
+  TestPropertyForEntityIsDefinedIsOpaque<ClassName, RedactedClassName, TestType,
+                                         RedactedTestType>(
+      config, property, redacted_property, Entity::kCrossOriginContent, false,
+      false, unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
 
   // Test when `property` is opaque to embedder and transparent to content.
   (config.*property)
@@ -206,8 +210,12 @@
       unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
   TestPropertyForEntityIsDefinedIsOpaque<ClassName, RedactedClassName, TestType,
                                          RedactedTestType>(
-      config, property, redacted_property, Entity::kContent, true, false,
-      unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
+      config, property, redacted_property, Entity::kSameOriginContent, true,
+      false, unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
+  TestPropertyForEntityIsDefinedIsOpaque<ClassName, RedactedClassName, TestType,
+                                         RedactedTestType>(
+      config, property, redacted_property, Entity::kCrossOriginContent, true,
+      true, unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
 
   // Test when `property` is transparent to embedder and opaque to content.
   (config.*property)
@@ -219,8 +227,12 @@
       unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
   TestPropertyForEntityIsDefinedIsOpaque<ClassName, RedactedClassName, TestType,
                                          RedactedTestType>(
-      config, property, redacted_property, Entity::kContent, true, true,
-      unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
+      config, property, redacted_property, Entity::kSameOriginContent, true,
+      true, unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
+  TestPropertyForEntityIsDefinedIsOpaque<ClassName, RedactedClassName, TestType,
+                                         RedactedTestType>(
+      config, property, redacted_property, Entity::kCrossOriginContent, true,
+      true, unredacted_redacted_equality_fn, redacted_redacted_equality_fn);
 }
 
 TEST(FencedFrameConfigMojomTraitsTest, ConfigMojomTraitsInternalUrnTest) {
@@ -265,7 +277,7 @@
   };
   std::vector<FencedFrameEntity> entities = {
       FencedFrameEntity::kEmbedder,
-      FencedFrameEntity::kContent,
+      FencedFrameEntity::kSameOriginContent,
   };
   GURL test_url("test_url");
   GURL test_urn = GenerateUrnUuid();
diff --git a/content/browser/file_system_access/file_system_access_file_handle_impl.cc b/content/browser/file_system_access/file_system_access_file_handle_impl.cc
index 626e484c7..51793c6 100644
--- a/content/browser/file_system_access/file_system_access_file_handle_impl.cc
+++ b/content/browser/file_system_access/file_system_access_file_handle_impl.cc
@@ -677,15 +677,13 @@
   DCHECK(max_swap_files_ >= 0);
   DCHECK(CanUseCowSwapFile());
 
-  did_attempt_swap_file_cloning_for_testing_ = true;
-
   auto after_clone_callback = base::BindOnce(
       &FileSystemAccessFileHandleImpl::DidCloneSwapFile,
       weak_factory_.GetWeakPtr(), count, swap_url, auto_close, std::move(lock),
       std::move(swap_lock), std::move(callback));
 
   if (swap_file_cloning_will_fail_for_testing_) {
-    std::move(after_clone_callback).Run(base::File::Error::FILE_ERROR_FAILED);
+    std::move(after_clone_callback).Run(base::File::Error::FILE_ERROR_ABORT);
     return;
   }
 
@@ -706,6 +704,8 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(CanUseCowSwapFile());
 
+  swap_file_clone_result_for_testing_ = result;
+
   if (result == base::File::FILE_ERROR_EXISTS) {
     // Cloning fails if the destination file exists. The file must have been
     // created between the FileExists check and the clone attempt. Attempt to
@@ -725,8 +725,6 @@
     return;
   }
 
-  did_create_cloned_swap_file_for_testing_ = true;
-
   std::move(callback).Run(
       file_system_access_error::Ok(),
       manager()->CreateFileWriter(
diff --git a/content/browser/file_system_access/file_system_access_file_handle_impl.h b/content/browser/file_system_access/file_system_access_file_handle_impl.h
index f9e56a55..eae4dc4 100644
--- a/content/browser/file_system_access/file_system_access_file_handle_impl.h
+++ b/content/browser/file_system_access/file_system_access_file_handle_impl.h
@@ -76,11 +76,9 @@
   void set_swap_file_cloning_will_fail_for_testing() {
     swap_file_cloning_will_fail_for_testing_ = true;
   }
-  bool get_did_attempt_swap_file_cloning_for_testing() const {
-    return did_attempt_swap_file_cloning_for_testing_;
-  }
-  bool get_did_create_cloned_swap_file_for_testing() const {
-    return did_create_cloned_swap_file_for_testing_;
+  const absl::optional<base::File::Error>&
+  get_swap_file_clone_result_for_testing() const {
+    return swap_file_clone_result_for_testing_;
   }
 #endif  // BUILDFLAG(IS_MAC)
 
@@ -186,8 +184,8 @@
   // Used to test that swap file creation attempts to use file cloning in some
   // circumstances, and gracefully handles file cloning errors.
   bool swap_file_cloning_will_fail_for_testing_ = false;
-  bool did_attempt_swap_file_cloning_for_testing_ = false;
-  bool did_create_cloned_swap_file_for_testing_ = false;
+  absl::optional<base::File::Error> swap_file_clone_result_for_testing_ =
+      absl::nullopt;
 #endif  // BUILDFLAG(IS_MAC)
 
   base::WeakPtr<FileSystemAccessHandleBase> AsWeakPtr() override;
diff --git a/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc b/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc
index b887ca7..ee12693 100644
--- a/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc
+++ b/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc
@@ -546,12 +546,48 @@
 class FileSystemAccessFileHandleSwapFileCloningTest
     : public FileSystemAccessFileHandleImplTest {
  public:
+  enum class CloneFileResult {
+    kDidNotAttempt,
+    kAttemptedAndAborted,
+    kAttemptedAndCompletedUnexpectedly,
+    kAttemptedAndCompletedAsExpected
+  };
+
   FileSystemAccessFileHandleSwapFileCloningTest()
       : scoped_feature_list_(features::kFileSystemAccessCowSwapFile) {}
   void SetUp() override {
     SetupHelper(storage::kFileSystemTypeLocal, /*is_incognito=*/false);
   }
 
+  CloneFileResult GetCloneFileResult(
+      const std::unique_ptr<FileSystemAccessFileHandleImpl>& handle) {
+    auto maybe_clone_result = handle->get_swap_file_clone_result_for_testing();
+
+    if (!maybe_clone_result.has_value()) {
+      return CloneFileResult::kDidNotAttempt;
+    }
+
+    if (maybe_clone_result.value() == base::File::Error::FILE_ERROR_ABORT) {
+      return CloneFileResult::kAttemptedAndAborted;
+    }
+
+    // We should not attempt to clone the file if the swap file exists. Other
+    // errors are okay.
+    if (maybe_clone_result.value() == base::File::Error::FILE_ERROR_EXISTS) {
+      return CloneFileResult::kAttemptedAndCompletedUnexpectedly;
+    }
+
+    // TODO(https://crbug.com/1439179): Remove this expectation once we have a
+    // better idea of what's causing the spurious failures.
+    EXPECT_EQ(maybe_clone_result.value(), base::File::Error::FILE_OK);
+
+    // Ideally we could just check that the result is FILE_OK, but
+    // clonefile() may spuriously fail. See https://crbug.com/1439179. For the
+    // purposes of these tests, we'll consider these spurious errors as
+    // "expected".
+    return CloneFileResult::kAttemptedAndCompletedAsExpected;
+  }
+
  protected:
   base::test::ScopedFeatureList scoped_feature_list_;
 };
@@ -569,8 +605,8 @@
   std::tie(result, writer_remote) = future.Take();
   EXPECT_EQ(result->status, blink::mojom::FileSystemAccessStatus::kOk);
   EXPECT_TRUE(writer_remote.is_valid());
-  EXPECT_TRUE(handle_->get_did_attempt_swap_file_cloning_for_testing());
-  EXPECT_TRUE(handle_->get_did_create_cloned_swap_file_for_testing());
+  EXPECT_EQ(GetCloneFileResult(handle_),
+            CloneFileResult::kAttemptedAndCompletedAsExpected);
 }
 
 TEST_F(FileSystemAccessFileHandleSwapFileCloningTest,
@@ -587,8 +623,7 @@
   std::tie(result, writer_remote) = future.Take();
   EXPECT_EQ(result->status, blink::mojom::FileSystemAccessStatus::kOk);
   EXPECT_TRUE(writer_remote.is_valid());
-  EXPECT_FALSE(handle_->get_did_attempt_swap_file_cloning_for_testing());
-  EXPECT_FALSE(handle_->get_did_create_cloned_swap_file_for_testing());
+  EXPECT_EQ(GetCloneFileResult(handle_), CloneFileResult::kDidNotAttempt);
 }
 
 TEST_F(FileSystemAccessFileHandleSwapFileCloningTest, HandleExistingSwapFile) {
@@ -615,8 +650,8 @@
   std::tie(result, writer_remote) = future.Take();
   EXPECT_EQ(result->status, blink::mojom::FileSystemAccessStatus::kOk);
   EXPECT_TRUE(writer_remote.is_valid());
-  EXPECT_TRUE(handle_->get_did_attempt_swap_file_cloning_for_testing());
-  EXPECT_TRUE(handle_->get_did_create_cloned_swap_file_for_testing());
+  EXPECT_EQ(GetCloneFileResult(handle_),
+            CloneFileResult::kAttemptedAndCompletedAsExpected);
 }
 
 TEST_F(FileSystemAccessFileHandleSwapFileCloningTest, HandleCloneFailure) {
@@ -635,8 +670,7 @@
   std::tie(result, writer_remote) = future.Take();
   EXPECT_EQ(result->status, blink::mojom::FileSystemAccessStatus::kOk);
   EXPECT_TRUE(writer_remote.is_valid());
-  EXPECT_TRUE(handle_->get_did_attempt_swap_file_cloning_for_testing());
-  EXPECT_FALSE(handle_->get_did_create_cloned_swap_file_for_testing());
+  EXPECT_EQ(GetCloneFileResult(handle_), CloneFileResult::kAttemptedAndAborted);
 }
 #endif  // BUILDFLAG(IS_MAC)
 
diff --git a/content/browser/indexed_db/database_impl.cc b/content/browser/indexed_db/database_impl.cc
index ca746f3..0cfabb6 100644
--- a/content/browser/indexed_db/database_impl.cc
+++ b/content/browser/indexed_db/database_impl.cc
@@ -586,35 +586,30 @@
       std::move(callbacks)));
 }
 
-void DatabaseImpl::Clear(
-    int64_t transaction_id,
-    int64_t object_store_id,
-    mojo::PendingAssociatedRemote<blink::mojom::IDBCallbacks>
-        pending_callbacks) {
+void DatabaseImpl::Clear(int64_t transaction_id,
+                         int64_t object_store_id,
+                         ClearCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  auto callbacks = base::MakeRefCounted<IndexedDBCallbacks>(
-      dispatcher_host_->AsWeakPtr(), bucket_info_, std::move(pending_callbacks),
-      idb_runner_);
-  if (!connection_->IsConnected())
+  if (!connection_->IsConnected()) {
+    std::move(callback).Run(/*success=*/false);
     return;
+  }
 
   IndexedDBTransaction* transaction =
       connection_->GetTransaction(transaction_id);
-  if (!transaction)
-    return;
-
-  if (!transaction->IsAcceptingRequests()) {
+  if (!transaction || !transaction->IsAcceptingRequests()) {
     // TODO(https://crbug.com/1249908): If the transaction was already committed
     // (or is in the process of being committed) we should kill the renderer.
     // This branch however also includes cases where the browser process aborted
     // the transaction, as currently we don't distinguish that state from the
     // transaction having been committed. So for now simply ignore the request.
+    std::move(callback).Run(/*success=*/false);
     return;
   }
 
   transaction->ScheduleTask(BindWeakOperation(
       &IndexedDBDatabase::ClearOperation, connection_->database()->AsWeakPtr(),
-      object_store_id, std::move(callbacks)));
+      object_store_id, std::move(callback)));
 }
 
 void DatabaseImpl::CreateIndex(int64_t transaction_id,
diff --git a/content/browser/indexed_db/database_impl.h b/content/browser/indexed_db/database_impl.h
index 062d2f21..7a5b96e 100644
--- a/content/browser/indexed_db/database_impl.h
+++ b/content/browser/indexed_db/database_impl.h
@@ -114,8 +114,7 @@
           pending_callbacks) override;
   void Clear(int64_t transaction_id,
              int64_t object_store_id,
-             mojo::PendingAssociatedRemote<blink::mojom::IDBCallbacks>
-                 pending_callbacks) override;
+             ClearCallback callback) override;
   void CreateIndex(int64_t transaction_id,
                    int64_t object_store_id,
                    int64_t index_id,
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc
index ebd0432..daa2b2e 100644
--- a/content/browser/indexed_db/indexed_db_database.cc
+++ b/content/browser/indexed_db/indexed_db_database.cc
@@ -1662,23 +1662,21 @@
 
 Status IndexedDBDatabase::ClearOperation(
     int64_t object_store_id,
-    scoped_refptr<IndexedDBCallbacks> callbacks,
+    blink::mojom::IDBDatabase::ClearCallback success_callback,
     IndexedDBTransaction* transaction) {
   TRACE_EVENT1("IndexedDB", "IndexedDBDatabase::ClearOperation", "txn.id",
                transaction->id());
-
-  if (!IsObjectStoreIdInMetadata(object_store_id))
-    return leveldb::Status::InvalidArgument("Invalid object_store_id.");
-
-  Status s = backing_store_->ClearObjectStore(
-      transaction->BackingStoreTransaction(), id(), object_store_id);
-  if (!s.ok())
-    return s;
-  callbacks->OnSuccess();
-
-  factory_->NotifyIndexedDBContentChanged(
-      bucket_locator(), metadata_.name,
-      metadata_.object_stores[object_store_id].name);
+  Status s = leveldb::Status::InvalidArgument("Invalid object_store_id.");
+  if (IsObjectStoreIdInMetadata(object_store_id)) {
+    s = backing_store_->ClearObjectStore(transaction->BackingStoreTransaction(),
+                                         id(), object_store_id);
+  }
+  if (s.ok()) {
+    factory_->NotifyIndexedDBContentChanged(
+        bucket_locator(), metadata_.name,
+        metadata_.object_stores[object_store_id].name);
+  }
+  std::move(success_callback).Run(s.ok());
   return s;
 }
 
diff --git a/content/browser/indexed_db/indexed_db_database.h b/content/browser/indexed_db/indexed_db_database.h
index 7449c20..e6fd1faa 100644
--- a/content/browser/indexed_db/indexed_db_database.h
+++ b/content/browser/indexed_db/indexed_db_database.h
@@ -293,9 +293,10 @@
       scoped_refptr<IndexedDBCallbacks> callbacks,
       IndexedDBTransaction* transaction);
 
-  leveldb::Status ClearOperation(int64_t object_store_id,
-                                 scoped_refptr<IndexedDBCallbacks> callbacks,
-                                 IndexedDBTransaction* transaction);
+  leveldb::Status ClearOperation(
+      int64_t object_store_id,
+      blink::mojom::IDBDatabase::ClearCallback callback,
+      IndexedDBTransaction* transaction);
 
   bool IsObjectStoreIdInMetadata(int64_t object_store_id) const;
   bool IsObjectStoreIdAndIndexIdInMetadata(int64_t object_store_id,
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc b/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc
index f18d18d..7ee3af9b 100644
--- a/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_dispatcher_host_unittest.cc
@@ -933,8 +933,6 @@
   EXPECT_EQ(connection2->version, metadata2.version);
   EXPECT_EQ(connection2->db_name, metadata2.name);
 
-  std::unique_ptr<StrictMock<MockMojoIndexedDBCallbacks>> clear_callbacks;
-
   // Clear object store.
   base::RunLoop loop5;
   base::RepeatingClosure quit_closure5 =
@@ -943,12 +941,6 @@
       FROM_HERE, base::BindLambdaForTesting([&]() {
         ::testing::InSequence dummy;
 
-        clear_callbacks =
-            std::make_unique<StrictMock<MockMojoIndexedDBCallbacks>>();
-
-        EXPECT_CALL(*clear_callbacks, Success())
-            .Times(1)
-            .WillOnce(RunClosure(quit_closure5));
         EXPECT_CALL(*connection2->connection_callbacks,
                     Complete(kTransactionId2))
             .Times(1)
@@ -957,14 +949,13 @@
             *connection2->open_callbacks,
             MockedSuccessDatabase(IsAssociatedInterfacePtrInfoValid(false), _))
             .Times(1)
-            .WillOnce(RunClosure(std::move(quit_closure5)));
+            .WillOnce(RunClosure(quit_closure5));
 
         connection2->database.Bind(std::move(pending_database2));
         ASSERT_TRUE(connection2->database.is_bound());
         ASSERT_TRUE(connection2->version_change_transaction.is_bound());
-        connection2->database->Clear(
-            kTransactionId2, kObjectStoreId,
-            clear_callbacks->CreateInterfacePtrAndBind());
+        connection2->database->Clear(kTransactionId2, kObjectStoreId,
+                                     base::IgnoreArgs<bool>(quit_closure5));
         connection2->version_change_transaction->Commit(0);
       }));
   loop5.Run();
@@ -976,7 +967,6 @@
   base::RunLoop loop6;
   context_impl_->IDBTaskRunner()->PostTask(FROM_HERE,
                                            base::BindLambdaForTesting([&]() {
-                                             clear_callbacks.reset();
                                              connection2.reset();
                                              loop6.Quit();
                                            }));
diff --git a/content/browser/interest_group/ad_auction_service_impl.cc b/content/browser/interest_group/ad_auction_service_impl.cc
index cc0f393f..bdbf163ae 100644
--- a/content/browser/interest_group/ad_auction_service_impl.cc
+++ b/content/browser/interest_group/ad_auction_service_impl.cc
@@ -358,6 +358,13 @@
   std::move(callback).Run();
 }
 
+void AdAuctionServiceImpl::GetInterestGroupAdAuctionData(
+    const url::Origin& seller,
+    GetInterestGroupAdAuctionDataCallback callback) {
+  // TODO(behamilton): Implement this functionality.
+  std::move(callback).Run({});
+}
+
 void AdAuctionServiceImpl::CreateAdRequest(
     blink::mojom::AdRequestConfigPtr config,
     CreateAdRequestCallback callback) {
diff --git a/content/browser/interest_group/ad_auction_service_impl.h b/content/browser/interest_group/ad_auction_service_impl.h
index e7fde20..67bbada 100644
--- a/content/browser/interest_group/ad_auction_service_impl.h
+++ b/content/browser/interest_group/ad_auction_service_impl.h
@@ -72,6 +72,9 @@
       const GURL& urn_url,
       std::vector<blink::mojom::AdKeywordReplacementPtr> replacements,
       DeprecatedReplaceInURNCallback callback) override;
+  void GetInterestGroupAdAuctionData(
+      const url::Origin& seller,
+      GetInterestGroupAdAuctionDataCallback callback) override;
   void CreateAdRequest(blink::mojom::AdRequestConfigPtr config,
                        CreateAdRequestCallback callback) override;
   void FinalizeAd(const std::string& ads_guid,
diff --git a/content/browser/interest_group/interest_group_browsertest.cc b/content/browser/interest_group/interest_group_browsertest.cc
index 1f4a0616..732a0a5 100644
--- a/content/browser/interest_group/interest_group_browsertest.cc
+++ b/content/browser/interest_group/interest_group_browsertest.cc
@@ -13934,6 +13934,195 @@
   EXPECT_FALSE(last_request_is_ad_auction_header_request());
 }
 
+class InterestGroupBiddingAndAuctionServerBrowserTest
+    : public InterestGroupBrowserTest {
+ public:
+  InterestGroupBiddingAndAuctionServerBrowserTest() {
+    feature_list_.InitAndEnableFeature(
+        blink::features::kFledgeBiddingAndAuctionServer);
+  }
+
+  // Attempts to get the auction blob for seller.  Returns kSuccess if the
+  // operation claims to have succeeded, and the exception message on failure.
+  //
+  // If `execution_target` is non-null, uses it as the target. Otherwise, uses
+  // shell().
+  [[nodiscard]] std::string GetInterestGroupAdAuctionData(
+      url::Origin seller,
+      absl::optional<ToRenderFrameHost> execution_target = absl::nullopt) {
+    return EvalJs(execution_target ? *execution_target : shell(),
+                  JsReplace(R"(
+    (async function() {
+      try {
+        let data = await navigator.getInterestGroupAdAuctionData({
+          seller: $1
+        });
+        return btoa(String.fromCharCode.apply(null, data));
+      } catch (e) {
+        return e.toString();
+      }
+    })())",
+                            seller))
+        .ExtractString();
+  }
+
+ protected:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(InterestGroupBiddingAndAuctionServerBrowserTest,
+                       TestEmpty) {
+  GURL test_url = https_server_->GetURL("a.test", "/interest_group/empty.html");
+  url::Origin test_origin = url::Origin::Create(test_url);
+
+  ASSERT_TRUE(NavigateToURL(shell(), test_url));
+
+  EXPECT_EQ("", GetInterestGroupAdAuctionData(test_origin));
+}
+
+IN_PROC_BROWSER_TEST_F(InterestGroupBiddingAndAuctionServerBrowserTest,
+                       TestInvalidSeller) {
+  GURL test_url = https_server_->GetURL("a.test", "/interest_group/empty.html");
+  url::Origin test_origin = url::Origin::Create(test_url);
+
+  ASSERT_TRUE(NavigateToURL(shell(), test_url));
+
+  EXPECT_EQ(
+      "TypeError: Failed to execute 'getInterestGroupAdAuctionData' on "
+      "'Navigator': seller 'null' for AdAuctionDataConfig must be a valid "
+      "https origin.",
+      GetInterestGroupAdAuctionData(url::Origin()));
+}
+
+IN_PROC_BROWSER_TEST_F(InterestGroupBiddingAndAuctionServerBrowserTest,
+                       ChecksPermissionPolicyWarning) {
+  // TODO(behamilton): Merge with
+  // InterestGroupBrowserTest.FeaturesEnabledForAllByPermissionsPolicy once this
+  // feature has been released.
+  GURL test_url = https_server_->GetURL(
+      "a.test",
+      "/cross_site_iframe_factory.html?a.test("
+      "a.test,"
+      "b.test("
+      "c.test{allow-join-ad-interest-group;run-ad-auction},"
+      "a.test{allow-join-ad-interest-group;run-ad-auction},"
+      "a.test{allow-join-ad-interest-group;run-ad-auction}"
+      ")"
+      ")");
+  url::Origin test_origin = url::Origin::Create(test_url);
+
+  ASSERT_TRUE(NavigateToURL(shell(), test_url));
+
+  RenderFrameHost* main_frame = web_contents()->GetPrimaryMainFrame();
+  RenderFrameHost* same_origin_iframe = ChildFrameAt(main_frame, 0);
+  RenderFrameHost* cross_origin_iframe = ChildFrameAt(main_frame, 1);
+  RenderFrameHost* inner_cross_origin_iframe =
+      ChildFrameAt(cross_origin_iframe, 0);
+  RenderFrameHost* same_origin_iframe_in_cross_origin_iframe =
+      ChildFrameAt(cross_origin_iframe, 1);
+  RenderFrameHost* same_origin_iframe_in_cross_origin_iframe2 =
+      ChildFrameAt(cross_origin_iframe, 2);
+
+  RenderFrameHost* execution_targets[] = {
+      main_frame,
+      same_origin_iframe,
+      cross_origin_iframe,
+      inner_cross_origin_iframe,
+      same_origin_iframe_in_cross_origin_iframe,
+      same_origin_iframe_in_cross_origin_iframe2};
+
+  for (auto* execution_target : execution_targets) {
+    SCOPED_TRACE(execution_target->GetLastCommittedURL().spec());
+    WebContentsConsoleObserver console_observer(shell()->web_contents());
+    console_observer.SetPattern(WarningPermissionsPolicy("*", "*"));
+
+    EXPECT_EQ("", GetInterestGroupAdAuctionData(test_origin, execution_target));
+#if BUILDFLAG(IS_ANDROID)
+    RenderFrameHost* execution_targets_with_message[] = {cross_origin_iframe};
+#else
+    RenderFrameHost* execution_targets_with_message[] = {
+        cross_origin_iframe, inner_cross_origin_iframe,
+        same_origin_iframe_in_cross_origin_iframe};
+#endif  // BUILDFLAG(IS_ANDROID)
+    if (base::Contains(execution_targets_with_message, execution_target)) {
+      EXPECT_EQ(WarningPermissionsPolicy("run-ad-auction",
+                                         "getInterestGroupAdAuctionData"),
+                console_observer.GetMessageAt(0));
+    } else {
+      EXPECT_TRUE(console_observer.messages().empty());
+    }
+  }
+}
+
+class InterestGroupBiddingAndAuctionServerRestrictedPermissionsPolicyBrowserTest
+    : public InterestGroupBiddingAndAuctionServerBrowserTest {
+ public:
+  InterestGroupBiddingAndAuctionServerRestrictedPermissionsPolicyBrowserTest() {
+    feature_list_.InitAndEnableFeature(
+        blink::features::kAdInterestGroupAPIRestrictedPolicyByDefault);
+  }
+
+ protected:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(
+    InterestGroupBiddingAndAuctionServerRestrictedPermissionsPolicyBrowserTest,
+    ChecksPermissionPolicyEnforce) {
+  // TODO(behamilton): Merge with
+  // InterestGroupBrowserTest.EnabledByPermissionsPolicy once this feature has
+  // been released.
+  GURL test_url = https_server_->GetURL(
+      "a.test",
+      "/cross_site_iframe_factory.html?a.test("
+      "a.test,"
+      "b.test("
+      "c.test{allow-join-ad-interest-group;run-ad-auction},"
+      "a.test{allow-join-ad-interest-group;run-ad-auction},"
+      "a.test{allow-join-ad-interest-group;run-ad-auction}"
+      ")"
+      ")");
+  url::Origin test_origin = url::Origin::Create(test_url);
+
+  ASSERT_TRUE(NavigateToURL(shell(), test_url));
+
+  RenderFrameHost* main_frame = web_contents()->GetPrimaryMainFrame();
+  RenderFrameHost* same_origin_iframe = ChildFrameAt(main_frame, 0);
+  RenderFrameHost* cross_origin_iframe = ChildFrameAt(main_frame, 1);
+  RenderFrameHost* inner_cross_origin_iframe =
+      ChildFrameAt(cross_origin_iframe, 0);
+  RenderFrameHost* same_origin_iframe_in_cross_origin_iframe =
+      ChildFrameAt(cross_origin_iframe, 1);
+  RenderFrameHost* same_origin_iframe_in_cross_origin_iframe2 =
+      ChildFrameAt(cross_origin_iframe, 2);
+
+  RenderFrameHost* execution_targets[] = {
+      main_frame,
+      same_origin_iframe,
+      cross_origin_iframe,
+      inner_cross_origin_iframe,
+      same_origin_iframe_in_cross_origin_iframe,
+      same_origin_iframe_in_cross_origin_iframe2};
+
+  for (auto* execution_target : execution_targets) {
+    SCOPED_TRACE(execution_target->GetLastCommittedURL().spec());
+    RenderFrameHost* execution_targets_with_message[] = {
+        cross_origin_iframe, inner_cross_origin_iframe,
+        same_origin_iframe_in_cross_origin_iframe,
+        same_origin_iframe_in_cross_origin_iframe2};
+    if (base::Contains(execution_targets_with_message, execution_target)) {
+      EXPECT_EQ(
+          "NotAllowedError: Failed to execute 'getInterestGroupAdAuctionData' "
+          "on 'Navigator': "
+          "Feature run-ad-auction is not enabled by Permissions Policy",
+          GetInterestGroupAdAuctionData(test_origin, execution_target));
+    } else {
+      EXPECT_EQ("",
+                GetInterestGroupAdAuctionData(test_origin, execution_target));
+    }
+  }
+}
+
 }  // namespace
 
 }  // namespace content
diff --git a/content/browser/loader/loader_browsertest.cc b/content/browser/loader/loader_browsertest.cc
index dcf89eab..0dd16eb 100644
--- a/content/browser/loader/loader_browsertest.cc
+++ b/content/browser/loader/loader_browsertest.cc
@@ -765,7 +765,7 @@
   std::unique_ptr<URLLoaderInterceptor> interceptor_;
 };
 
-IN_PROC_BROWSER_TEST_F(RequestDataBrowserTest, Basic) {
+IN_PROC_BROWSER_TEST_F(RequestDataBrowserTest, DISABLED_Basic) {
   GURL top_url(embedded_test_server()->GetURL("/page_with_subresources.html"));
   url::Origin top_origin = url::Origin::Create(top_url);
 
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
index 5f4be48..1c74c880 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -121,19 +121,7 @@
   attributes.samples = 0;
   attributes.sample_buffers = 0;
   attributes.bind_generates_resource = false;
-  if (display_color_space == gfx::ColorSpace::CreateSRGB()) {
-    attributes.color_space = gpu::COLOR_SPACE_SRGB;
-  } else if (display_color_space == gfx::ColorSpace::CreateDisplayP3D65()) {
-    attributes.color_space = gpu::COLOR_SPACE_DISPLAY_P3;
-  } else {
-    // We don't support HDR on Android yet, but when we do, this function should
-    // be updated to support it.
-    DCHECK(!display_color_space.IsHDR());
-
-    attributes.color_space = gpu::COLOR_SPACE_UNSPECIFIED;
-    DLOG(ERROR) << "Android color space is neither sRGB nor P3, output color "
-                   "will be incorrect.";
-  }
+  attributes.color_space = gpu::COLOR_SPACE_SRGB;
 
   if (requires_alpha_channel) {
     attributes.alpha_size = 8;
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index ad258ab..bde59c13 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -5681,8 +5681,8 @@
 
     if (response()) {
       HandleTopicsEligibleResponse(
-          response_head_->parsed_headers,
-          url::Origin::Create(common_params_->url), *GetRenderFrameHost(),
+          response_head_->parsed_headers, url::Origin::Create(GetURL()),
+          *GetRenderFrameHost(),
           browsing_topics::ApiCallerSource::kIframeAttribute);
     }
   }
@@ -7363,20 +7363,23 @@
   // * If the properties have no mapped url, the browser will send the renderer
   //   the `RedactedFencedFrameProperties` unconditionally.
   // * If the properties do have a mapped url, the browser will send the
-  //   renderer the `RedactedFencedFrameProperties` when the committed
-  //   origin is same-origin to the urn's mapped_url (after redirects).
+  //   renderer the `RedactedFencedFrameProperties`, redacting extra information
+  //   based on whether the origin is same-origin to the urn's mapped_url (after
+  //   redirects).
   // This is because we want to make fenced frame APIs available only
   // in same-origin contexts, when "same-origin" has a coherent definition.
   const auto& computed_fenced_frame_properties = ComputeFencedFrameProperties();
   if (computed_fenced_frame_properties.has_value()) {
-    if (!computed_fenced_frame_properties->mapped_url_.has_value() ||
-        url::Origin::Create(common_params_->url)
-            .IsSameOriginWith(computed_fenced_frame_properties->mapped_url_
-                                  ->GetValueIgnoringVisibility())) {
-      commit_params_->fenced_frame_properties =
-          computed_fenced_frame_properties->RedactFor(
-              content::FencedFrameEntity::kContent);
+    content::FencedFrameEntity entity =
+        content::FencedFrameEntity::kSameOriginContent;
+    if (computed_fenced_frame_properties->mapped_url_.has_value() &&
+        !url::Origin::Create(common_params_->url)
+             .IsSameOriginWith(computed_fenced_frame_properties->mapped_url_
+                                   ->GetValueIgnoringVisibility())) {
+      entity = content::FencedFrameEntity::kCrossOriginContent;
     }
+    commit_params_->fenced_frame_properties =
+        computed_fenced_frame_properties->RedactFor(entity);
   }
 
   if (ready_to_commit_callback_for_testing_)
@@ -8461,13 +8464,12 @@
       blink::GetPermissionsPolicyFeatureList();
 
   // Check if the outer document's permissions policies allow all of the
-  // required policies for `origin`.
-  if (GetParentFrameOrOuterDocument()
+  // required policies.
+  absl::optional<const blink::PermissionsPolicy::Allowlist> embedder_allowlist =
+      GetParentFrameOrOuterDocument()
           ->permissions_policy()
-          ->GetAllowlistForFeatureIfExists(feature) &&
-      !GetParentFrameOrOuterDocument()
-           ->permissions_policy()
-           ->IsFeatureEnabledForOrigin(feature, origin)) {
+          ->GetAllowlistForFeatureIfExists(feature);
+  if (embedder_allowlist && !embedder_allowlist->MatchesAll()) {
     return false;
   }
 
@@ -8497,9 +8499,12 @@
   if (!frame_tree_node_->IsFencedFrameRoot())
     return true;
 
+  const absl::optional<FencedFrameProperties>&
+      computed_fenced_frame_properties = ComputeFencedFrameProperties();
+
   // Permissions policies only need to be checked for fenced frames created from
   // an API like FLEDGE or Shared Storage.
-  if (!fenced_frame_properties_) {
+  if (!computed_fenced_frame_properties) {
     return true;
   }
 
@@ -8510,7 +8515,7 @@
   // extra policies defined in the outer document/"allow" attribute won't have
   // any effect.
   for (const blink::mojom::PermissionsPolicyFeature feature :
-       fenced_frame_properties_->required_permissions_to_load) {
+       computed_fenced_frame_properties->effective_enabled_permissions) {
     if (!IsFencedFrameRequiredPolicyFeatureAllowed(origin, feature)) {
       const blink::PermissionsPolicyFeatureToNameMap& feature_to_name_map =
           blink::GetPermissionsPolicyFeatureToNameMap();
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index 865bed3f..8a1760f 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -636,7 +636,7 @@
         frame->frame_tree_node()->GetFencedFrameProperties();
     base::span<const blink::mojom::PermissionsPolicyFeature> permissions;
     if (fenced_frame_properties) {
-      permissions = fenced_frame_properties->required_permissions_to_load;
+      permissions = fenced_frame_properties->effective_enabled_permissions;
     }
     subframe_policy = blink::PermissionsPolicy::CreateForFencedFrame(
         subframe_origin, permissions);
@@ -11057,7 +11057,7 @@
         frame_tree_node()->GetFencedFrameProperties();
     base::span<const blink::mojom::PermissionsPolicyFeature> permissions;
     if (fenced_frame_properties) {
-      permissions = fenced_frame_properties->required_permissions_to_load;
+      permissions = fenced_frame_properties->effective_enabled_permissions;
     }
     permissions_policy_ = blink::PermissionsPolicy::CreateForFencedFrame(
         last_committed_origin_, permissions);
diff --git a/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java b/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java
index e566b17..f6121a3 100644
--- a/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java
+++ b/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java
@@ -89,8 +89,8 @@
      * https://developer.android.com/reference/androidx/privacysandbox/ads/adservices/java/measurement/MeasurementManagerFutures.
      */
     @CalledByNative
-    private void registerAttributionSource(int requestId, GURL registrationUrl, GURL topLevelOrigin,
-            boolean isDebugKeyAllowed, MotionEvent event) {
+    private void registerWebAttributionSource(int requestId, GURL registrationUrl,
+            GURL topLevelOrigin, boolean isDebugKeyAllowed, MotionEvent event) {
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
             onRegistrationCompleted(requestId, /*success=*/false);
             return;
@@ -110,11 +110,31 @@
     }
 
     /**
+     * Registers an attribution source with native, see `registerSourceAsync()`:
+     * https://developer.android.com/reference/androidx/privacysandbox/ads/adservices/java/measurement/MeasurementManagerFutures.
+     */
+    @CalledByNative
+    private void registerAttributionSource(int requestId, GURL registrationUrl, MotionEvent event) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
+            onRegistrationCompleted(requestId, /*success=*/false);
+            return;
+        }
+        MeasurementManagerFutures mm = getManager();
+        if (mm == null) {
+            onRegistrationCompleted(requestId, /*success=*/false);
+            return;
+        }
+        ListenableFuture<?> future =
+                mm.registerSourceAsync(Uri.parse(registrationUrl.getSpec()), event);
+        addRegistrationFutureCallback(requestId, future);
+    }
+
+    /**
      * Registers a web attribution trigger with native, see `registerWebTriggerAsync()`:
      * https://developer.android.com/reference/androidx/privacysandbox/ads/adservices/java/measurement/MeasurementManagerFutures.
      */
     @CalledByNative
-    private void registerAttributionTrigger(
+    private void registerWebAttributionTrigger(
             int requestId, GURL registrationUrl, GURL topLevelOrigin, boolean isDebugKeyAllowed) {
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
             onRegistrationCompleted(requestId, /*success=*/false);
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionMarkerTest.java b/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionMarkerTest.java
index 76e29aba..5f7bf153 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionMarkerTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionMarkerTest.java
@@ -17,6 +17,7 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.Batch;
+import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Criteria;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.DisabledTest;
@@ -30,6 +31,7 @@
  * being sent when there's a caret on screen.
  */
 @RunWith(ContentJUnit4ClassRunner.class)
+@CommandLineFlags.Add({"enable-features=HiddenSelectionBounds"})
 @Batch(Batch.PER_CLASS)
 public class InsertionMarkerTest {
     @Rule
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index a5ea7ba..1c45972 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -539,6 +539,10 @@
   return true;
 }
 
+bool ContentBrowserClient::ShouldUseOsWebSourceAttributionReporting() {
+  return true;
+}
+
 bool ContentBrowserClient::IsSharedStorageAllowed(
     content::BrowserContext* browser_context,
     content::RenderFrameHost* rfh,
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 3db43fd..44fbcd7 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -925,6 +925,11 @@
   // This method must be idempotent.
   virtual bool IsWebAttributionReportingAllowed();
 
+  // Allows the embedder to control if an Os source event should register as
+  // a Web Os or Os (App) source.
+  // This method must be idempotent.
+  virtual bool ShouldUseOsWebSourceAttributionReporting();
+
   // Allows the embedder to control if Shared Storage API operations can happen
   // in a given context.
   //
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index a56219d..41e33b3 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -933,8 +933,9 @@
 const char kWebXrRuntimeOrientationSensors[] = "orientation-sensors";
 
 // The following are the runtimes that WebXr supports.
+const char kWebXrRuntimeCardboard[] = "cardboard";
+const char kWebXrRuntimeGVR[] = "gvr";
 const char kWebXrRuntimeOpenXr[] = "openxr";
-const char kWebXrRuntimeWMR[] = "windows-mixed-reality";
 
 #if BUILDFLAG(IS_ANDROID)
 // Disable Media Session API
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
index 340fb1b4..e992dab 100644
--- a/content/public/common/content_switches.h
+++ b/content/public/common/content_switches.h
@@ -242,9 +242,10 @@
 extern const char kWebRtcMaxCaptureFramerate[];
 CONTENT_EXPORT extern const char kWebXrForceRuntime[];
 CONTENT_EXPORT extern const char kWebXrRuntimeNone[];
+CONTENT_EXPORT extern const char kWebXrRuntimeCardboard[];
+CONTENT_EXPORT extern const char kWebXrRuntimeGVR[];
 CONTENT_EXPORT extern const char kWebXrRuntimeOrientationSensors[];
 CONTENT_EXPORT extern const char kWebXrRuntimeOpenXr[];
-CONTENT_EXPORT extern const char kWebXrRuntimeWMR[];
 CONTENT_EXPORT extern const char kZygoteCmdPrefix[];
 CONTENT_EXPORT extern const char kZygoteProcess[];
 
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
index cdb7ad4..20332aa 100644
--- a/content/public/test/browser_test_utils.cc
+++ b/content/public/test/browser_test_utils.cc
@@ -1627,7 +1627,6 @@
                       !(options & EXECUTE_SCRIPT_NO_USER_GESTURE) &&
                       world_id == ISOLATED_WORLD_ID_GLOBAL;
 
-  DOMMessageQueue dom_message_queue(rfh);
   ExecuteJavaScriptForTestsWaiter waiter(rfh);
   rfh->ExecuteJavaScriptForTests(base::UTF8ToUTF16(script), user_gesture,
                                  resolve_promises, world_id,
@@ -1651,30 +1650,6 @@
         "a JavaScript error: \"" + result_value.GetString() + "\"";
     return EvalJsResult(base::Value(), AnnotateAndAdjustJsStackTraces(
                                            error_text, source_url, script, 0));
-  } else if (options & EXECUTE_SCRIPT_USE_MANUAL_REPLY) {
-    // Callers that set EXECUTE_SCRIPT_USE_MANUAL_REPLY expect this function to
-    // block until their JS calls `window.domAutomationController.send`. To
-    // support this, wait for a message from DOMMessageQueue and parse it as
-    // JSON.
-    std::string json;
-    if (!dom_message_queue.WaitForMessage(&json)) {
-      return EvalJsResult(base::Value(),
-                          "Cannot communicate with DOMMessageQueue.");
-    }
-
-    auto parsed_json = base::JSONReader::ReadAndReturnValueWithError(
-        json, base::JSON_ALLOW_TRAILING_COMMAS);
-    if (!parsed_json.has_value())
-      return EvalJsResult(base::Value(), parsed_json.error().message);
-    result_type = JavaScriptExecutionResultType::kSuccess;
-    return EvalJsResult(parsed_json->Clone(), std::string());
-  } else if (dom_message_queue.HasMessages()) {
-    return EvalJsResult(base::Value(),
-                        "Calling domAutomationController.send is only allowed "
-                        "when using EXECUTE_SCRIPT_USE_MANUAL_REPLY. When "
-                        "using EvalJs(), the completion value is the value of "
-                        "the last executed statement. When using ExecJs(), "
-                        "there is no result value.");
   }
 
   return EvalJsResult(result_value.Clone(), std::string());
@@ -1686,9 +1661,6 @@
                                   const std::string& script,
                                   int options,
                                   int32_t world_id) {
-  CHECK(!(options & EXECUTE_SCRIPT_USE_MANUAL_REPLY))
-      << "USE_MANUAL_REPLY does not make sense with ExecJs.";
-
   // TODO(nick): Do we care enough about folks shooting themselves in the foot
   // here with e.g. ASSERT_TRUE(ExecJs("window == window.top")) -- when they
   // mean EvalJs -- to fail a CHECK() when eval_result.value.is_bool()?
diff --git a/content/public/test/browser_test_utils.h b/content/public/test/browser_test_utils.h
index f3cb642..1f7c98e 100644
--- a/content/public/test/browser_test_utils.h
+++ b/content/public/test/browser_test_utils.h
@@ -790,21 +790,10 @@
   // that.
   EXECUTE_SCRIPT_NO_USER_GESTURE = (1 << 0),
 
-  // This bit controls how the result is obtained. By default, EvalJs's runner
-  // script will call domAutomationController.send() with the completion
-  // value. Setting this bit will disable that, requiring |script| to provide
-  // its own call to domAutomationController.send() instead.
-  //
-  // Beware that if your script calls domAutomationController.send more than
-  // once, it can interfere with the results obtained by future calls to EvalJs.
-  // It is safer to use Promise resolution rather than
-  // domAutomationController.send.
-  EXECUTE_SCRIPT_USE_MANUAL_REPLY = (1 << 1),
-
   // By default, when the script passed to EvalJs evaluates to a Promise, the
   // execution continues until the Promise resolves, and the resolved value is
   // returned. Setting this bit disables such Promise resolution.
-  EXECUTE_SCRIPT_NO_RESOLVE_PROMISES = (1 << 2),
+  EXECUTE_SCRIPT_NO_RESOLVE_PROMISES = (1 << 1),
 };
 
 // EvalJs() -- run |script| in |execution_target| and return its value or error.
diff --git a/content/public/test/test_renderer_host.h b/content/public/test/test_renderer_host.h
index d12f092..3ddd29a 100644
--- a/content/public/test/test_renderer_host.h
+++ b/content/public/test/test_renderer_host.h
@@ -146,6 +146,9 @@
   // RenderFrameHost::AddMessageToConsole in this frame.
   virtual const std::vector<std::string>& GetConsoleMessages() = 0;
 
+  // Clears the console messages logged in this frame.
+  virtual void ClearConsoleMessages() = 0;
+
   // Get a count of the total number of heavy ad issues reported.
   virtual int GetHeavyAdIssueCount(HeavyAdIssueType type) = 0;
 
diff --git a/content/services/auction_worklet/auction_downloader.cc b/content/services/auction_worklet/auction_downloader.cc
index d245742..540a873 100644
--- a/content/services/auction_worklet/auction_downloader.cc
+++ b/content/services/auction_worklet/auction_downloader.cc
@@ -197,6 +197,7 @@
 
   auto simple_url_loader = std::move(simple_url_loader_);
   std::string allow_fledge;
+  std::string auction_allowed;
 
   if (!body) {
     std::string error_msg;
@@ -229,13 +230,17 @@
               /*decoded_body_length=*/body->size());
 
   if (!simple_url_loader->ResponseInfo()->headers ||
-      !simple_url_loader->ResponseInfo()->headers->GetNormalizedHeader(
-          "X-Allow-FLEDGE", &allow_fledge) ||
-      !base::EqualsCaseInsensitiveASCII(allow_fledge, "true")) {
+      ((!simple_url_loader->ResponseInfo()->headers->GetNormalizedHeader(
+            "X-Allow-FLEDGE", &allow_fledge) ||
+        !base::EqualsCaseInsensitiveASCII(allow_fledge, "true")) &&
+       (!simple_url_loader->ResponseInfo()->headers->GetNormalizedHeader(
+            "Ad-Auction-Allowed", &auction_allowed) ||
+        !base::EqualsCaseInsensitiveASCII(auction_allowed, "true")))) {
     std::move(auction_downloader_callback_)
         .Run(/*body=*/nullptr, /*headers=*/nullptr,
              base::StringPrintf(
-                 "Rejecting load of %s due to lack of X-Allow-FLEDGE: true.",
+                 "Rejecting load of %s due to lack of Ad-Auction-Allowed: true "
+                 "(or the deprecated X-Allow-FLEDGE: true).",
                  source_url_.spec().c_str()));
   } else if (!MimeTypeIsConsistent(mime_type_,
                                    simple_url_loader->ResponseInfo())) {
diff --git a/content/services/auction_worklet/auction_downloader_unittest.cc b/content/services/auction_worklet/auction_downloader_unittest.cc
index 1ec29fb99..760f6811 100644
--- a/content/services/auction_worklet/auction_downloader_unittest.cc
+++ b/content/services/auction_worklet/auction_downloader_unittest.cc
@@ -133,7 +133,33 @@
   EXPECT_FALSE(RunRequest());
   EXPECT_EQ(
       "Rejecting load of https://url.test/script.js due to lack of "
-      "X-Allow-FLEDGE: true.",
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
+      last_error_msg());
+
+  AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
+              kAsciiResponseBody, "Ad-Auction-Allowed: true");
+  EXPECT_TRUE(RunRequest());
+
+  AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
+              kAsciiResponseBody, "Ad-Auction-Allowed: false");
+  EXPECT_FALSE(RunRequest());
+  EXPECT_EQ(
+      "Rejecting load of https://url.test/script.js due to lack of "
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
+      last_error_msg());
+
+  AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
+              kAsciiResponseBody,
+              "Ad-Auction-Allowed: true\nX-Allow-FLEDGE: true");
+  EXPECT_TRUE(RunRequest());
+
+  AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
+              kAsciiResponseBody,
+              "Ad-Auction-Allowed: false\nX-Allow-FLEDGE: false");
+  EXPECT_FALSE(RunRequest());
+  EXPECT_EQ(
+      "Rejecting load of https://url.test/script.js due to lack of "
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
       last_error_msg());
 
   AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
@@ -141,7 +167,7 @@
   EXPECT_FALSE(RunRequest());
   EXPECT_EQ(
       "Rejecting load of https://url.test/script.js due to lack of "
-      "X-Allow-FLEDGE: true.",
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
       last_error_msg());
 
   AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
@@ -149,7 +175,7 @@
   EXPECT_FALSE(RunRequest());
   EXPECT_EQ(
       "Rejecting load of https://url.test/script.js due to lack of "
-      "X-Allow-FLEDGE: true.",
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
       last_error_msg());
 
   AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
@@ -157,7 +183,7 @@
   EXPECT_FALSE(RunRequest());
   EXPECT_EQ(
       "Rejecting load of https://url.test/script.js due to lack of "
-      "X-Allow-FLEDGE: true.",
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
       last_error_msg());
 
   AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
@@ -165,7 +191,7 @@
   EXPECT_FALSE(RunRequest());
   EXPECT_EQ(
       "Rejecting load of https://url.test/script.js due to lack of "
-      "X-Allow-FLEDGE: true.",
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
       last_error_msg());
 
   AddResponse(&url_loader_factory_, url_, kJavascriptMimeType, kUtf8Charset,
@@ -173,7 +199,7 @@
   EXPECT_FALSE(RunRequest());
   EXPECT_EQ(
       "Rejecting load of https://url.test/script.js due to lack of "
-      "X-Allow-FLEDGE: true.",
+      "Ad-Auction-Allowed: true (or the deprecated X-Allow-FLEDGE: true).",
       last_error_msg());
 }
 
diff --git a/content/services/auction_worklet/trusted_signals.cc b/content/services/auction_worklet/trusted_signals.cc
index 00122ce..839a170 100644
--- a/content/services/auction_worklet/trusted_signals.cc
+++ b/content/services/auction_worklet/trusted_signals.cc
@@ -543,8 +543,11 @@
     int format_version = 1;
     std::string format_version_string;
     if (headers &&
-        headers->GetNormalizedHeader("X-fledge-bidding-signals-format-version",
-                                     &format_version_string)) {
+        (headers->GetNormalizedHeader(
+             "Ad-Auction-Bidding-Signals-Format-Version",
+             &format_version_string) ||
+         headers->GetNormalizedHeader("X-fledge-bidding-signals-format-version",
+                                      &format_version_string))) {
       if (!base::StringToInt(format_version_string, &format_version) ||
           (format_version != 1 && format_version != 2)) {
         std::string error = base::StringPrintf(
diff --git a/content/services/auction_worklet/trusted_signals_unittest.cc b/content/services/auction_worklet/trusted_signals_unittest.cc
index db26da79..4b7a4e7 100644
--- a/content/services/auction_worklet/trusted_signals_unittest.cc
+++ b/content/services/auction_worklet/trusted_signals_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/functional/bind.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
@@ -442,6 +443,20 @@
       "Rejecting load of https://url.test/ due to unrecognized Format-Version "
       "header: shiny",
       error_msg_.value());
+
+  AddResponse(
+      &url_loader_factory_,
+      GURL("https://url.test/"
+           "?hostname=publisher&keys=key1&interestGroupNames=name1"),
+      kJsonMimeType, absl::nullopt, kBaseBiddingJson,
+      base::StringPrintf("%s\nAd-Auction-Bidding-Signals-Format-Version: 100",
+                         kAllowFledgeHeader));
+  EXPECT_FALSE(FetchBiddingSignals({"name1"}, {"key1"}, kHostname,
+                                   /*experiment_group_id=*/absl::nullopt));
+  EXPECT_EQ(
+      "Rejecting load of https://url.test/ due to unrecognized Format-Version "
+      "header: 100",
+      error_msg_.value());
 }
 
 TEST_F(TrustedSignalsTest, BiddingSignalsResponseNotObject) {
@@ -641,6 +656,45 @@
             *priority_vector);
 }
 
+TEST_F(TrustedSignalsTest, BiddingSignalsOneKeyNewHeaderName) {
+  AddResponse(
+      &url_loader_factory_,
+      GURL("https://url.test/"
+           "?hostname=publisher&keys=key1&interestGroupNames=name1"),
+      kJsonMimeType, absl::nullopt, kBaseBiddingJson,
+      base::StringPrintf("%s\nAd-Auction-Bidding-Signals-Format-Version: 2",
+                         kAllowFledgeHeader));
+  scoped_refptr<TrustedSignals::Result> signals =
+      FetchBiddingSignals({"name1"}, {"key1"}, kHostname,
+                          /*experiment_group_id=*/absl::nullopt);
+  ASSERT_TRUE(signals);
+  EXPECT_EQ(R"({"key1":1})", ExtractBiddingSignals(signals.get(), {"key1"}));
+  const auto* priority_vector = signals->GetPriorityVector("name1");
+  ASSERT_TRUE(priority_vector);
+  EXPECT_EQ((TrustedSignals::Result::PriorityVector{{"foo", 1}}),
+            *priority_vector);
+}
+
+TEST_F(TrustedSignalsTest, BiddingSignalsOneKeyBothOldAndNewHeaderNames) {
+  AddResponse(
+      &url_loader_factory_,
+      GURL("https://url.test/"
+           "?hostname=publisher&keys=key1&interestGroupNames=name1"),
+      kJsonMimeType, absl::nullopt, kBaseBiddingJson,
+      base::StringPrintf("%s\nAd-Auction-Bidding-Signals-Format-Version: 2\n"
+                         "X-Fledge-Bidding-Signals-Format-Version: 2",
+                         kAllowFledgeHeader));
+  scoped_refptr<TrustedSignals::Result> signals =
+      FetchBiddingSignals({"name1"}, {"key1"}, kHostname,
+                          /*experiment_group_id=*/absl::nullopt);
+  ASSERT_TRUE(signals);
+  EXPECT_EQ(R"({"key1":1})", ExtractBiddingSignals(signals.get(), {"key1"}));
+  const auto* priority_vector = signals->GetPriorityVector("name1");
+  ASSERT_TRUE(priority_vector);
+  EXPECT_EQ((TrustedSignals::Result::PriorityVector{{"foo", 1}}),
+            *priority_vector);
+}
+
 TEST_F(TrustedSignalsTest, ScoringSignalsForOneRenderUrl) {
   scoped_refptr<TrustedSignals::Result> signals =
       FetchScoringSignalsWithResponse(
diff --git a/content/test/browser_test_utils_browsertest.cc b/content/test/browser_test_utils_browsertest.cc
index 3a5b6e1..5f3158c 100644
--- a/content/test/browser_test_utils_browsertest.cc
+++ b/content/test/browser_test_utils_browsertest.cc
@@ -198,28 +198,18 @@
   }
 }
 
-IN_PROC_BROWSER_TEST_F(EvalJsBrowserTest, EvalJsWithManualReply) {
+IN_PROC_BROWSER_TEST_F(EvalJsBrowserTest, EvalJsWithDomAutomationController) {
   ASSERT_TRUE(embedded_test_server()->Start());
   EXPECT_TRUE(
       NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html")));
 
   std::string script = "window.domAutomationController.send(20); 'hi';";
 
-  // Calling domAutomationController is required for
-  // EXECUTE_SCRIPT_USE_MANUAL_REPLY.
-  EXPECT_EQ(20, EvalJs(shell(), script, EXECUTE_SCRIPT_USE_MANUAL_REPLY));
-
-  // Calling domAutomationController is an error with EvalJs.
-  auto result = EvalJs(shell(), script);
-  EXPECT_FALSE(20 == result);
-  EXPECT_FALSE("hi" == result);
-  EXPECT_THAT(result.error,
-              ::testing::EndsWith(
-                  "Calling domAutomationController.send is only allowed "
-                  "when using EXECUTE_SCRIPT_USE_MANUAL_REPLY. When "
-                  "using EvalJs(), the completion value is the value of "
-                  "the last executed statement. When using ExecJs(), "
-                  "there is no result value."));
+  // Calling domAutomationController is allowed with EvalJs, but doesn't
+  // influence the completion value.
+  EvalJsResult result = EvalJs(shell(), script);
+  EXPECT_NE(20, result);
+  EXPECT_EQ("hi", result);
 }
 
 IN_PROC_BROWSER_TEST_F(EvalJsBrowserTest, EvalJsTimeout) {
@@ -268,4 +258,15 @@
           "an isolated world. Details:"));
 }
 
+IN_PROC_BROWSER_TEST_F(EvalJsBrowserTest, ExecJsWithDomAutomationController) {
+  ASSERT_TRUE(embedded_test_server()->Start());
+  EXPECT_TRUE(
+      NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html")));
+
+  std::string script = "window.domAutomationController.send(20); 'hi';";
+
+  // Calling domAutomationController is allowed with ExecJs.
+  EXPECT_TRUE(ExecJs(shell(), script));
+}
+
 }  // namespace content
diff --git a/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
index a2cabeb..2005ad7 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
@@ -134,8 +134,6 @@
 crbug.com/1444151 [ mac apple-apple-m2 ] WebCodecs_EncodingRateControl_avc1.420034_prefer-hardware_constant_* [ Failure ]
 crbug.com/1444151 [ mac apple-apple-m2 ] WebCodecs_EncodingRateControl_avc1.420034_prefer-hardware_variable_1500000 [ RetryOnFailure ]
 
-crbug.com/1446081 [ win10 amd-0x7340 passthrough angle-d3d11 ] WebCodecs_EncodeColorSpace_avc1.42001E_prefer-hardware [ Failure ]
-
 #######################################################################
 # Automated Entries After This Point - Do Not Manually Add Below Here #
 #######################################################################
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc
index 2ee32ab..fa44643 100644
--- a/content/test/test_render_frame_host.cc
+++ b/content/test/test_render_frame_host.cc
@@ -270,6 +270,10 @@
   return console_messages_;
 }
 
+void TestRenderFrameHost::ClearConsoleMessages() {
+  console_messages_.clear();
+}
+
 int TestRenderFrameHost::GetHeavyAdIssueCount(
     RenderFrameHostTester::HeavyAdIssueType type) {
   switch (type) {
diff --git a/content/test/test_render_frame_host.h b/content/test/test_render_frame_host.h
index 4d9e661..0200232 100644
--- a/content/test/test_render_frame_host.h
+++ b/content/test/test_render_frame_host.h
@@ -113,6 +113,7 @@
   void SimulateUnloadACK() override;
   void SimulateUserActivation() override;
   const std::vector<std::string>& GetConsoleMessages() override;
+  void ClearConsoleMessages() override;
   int GetHeavyAdIssueCount(HeavyAdIssueType type) override;
   void SimulateManifestURLUpdate(const GURL& manifest_url) override;
   TestRenderFrameHost* AppendFencedFrame() override;
diff --git a/device/bluetooth/public/cpp/bluetooth_uuid.h b/device/bluetooth/public/cpp/bluetooth_uuid.h
index d636ba6..df51649 100644
--- a/device/bluetooth/public/cpp/bluetooth_uuid.h
+++ b/device/bluetooth/public/cpp/bluetooth_uuid.h
@@ -14,9 +14,8 @@
 #include "build/build_config.h"
 
 #if BUILDFLAG(IS_WIN)
-#include <rpc.h>
-
 #include "base/strings/string_piece_forward.h"
+#include "base/win/windows_types.h"
 #endif  // BUILDFLAG(IS_WIN)
 
 namespace device {
diff --git a/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc b/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc
index fe9d83ea..441a3e35 100644
--- a/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc
+++ b/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc
@@ -13,6 +13,10 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+#if BUILDFLAG(IS_WIN)
+#include <rpc.h>
+#endif
+
 namespace device {
 
 TEST(BluetoothUUIDTest, BluetoothUUID) {
diff --git a/device/fido/fido_discovery_factory.cc b/device/fido/fido_discovery_factory.cc
index 71259a9..22b6d887 100644
--- a/device/fido/fido_discovery_factory.cc
+++ b/device/fido/fido_discovery_factory.cc
@@ -22,7 +22,11 @@
 #endif  // !BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(IS_WIN)
+// rpc.h needs to be included before winuser.h.
+#include <rpc.h>
+
 #include <Winuser.h>
+
 #include "device/fido/win/discovery.h"
 #include "device/fido/win/webauthn_api.h"
 #endif  // BUILDFLAG(IS_WIN)
diff --git a/extensions/browser/api/declarative/declarative_rule.h b/extensions/browser/api/declarative/declarative_rule.h
index 585e1438..08cb07f2 100644
--- a/extensions/browser/api/declarative/declarative_rule.h
+++ b/extensions/browser/api/declarative/declarative_rule.h
@@ -19,6 +19,7 @@
 #include "base/functional/callback.h"
 #include "base/memory/ptr_util.h"
 #include "base/time/time.h"
+#include "base/values.h"
 #include "components/url_matcher/url_matcher.h"
 #include "extensions/common/api/events.h"
 #include "extensions/common/extension.h"
@@ -26,7 +27,6 @@
 
 namespace base {
 class Time;
-class Value;
 }
 
 namespace content {
@@ -59,7 +59,6 @@
 template<typename ConditionT>
 class DeclarativeConditionSet {
  public:
-  using Values = std::vector<base::Value>;
   using Conditions = std::vector<std::unique_ptr<const ConditionT>>;
   using const_iterator = typename Conditions::const_iterator;
 
@@ -72,7 +71,7 @@
   static std::unique_ptr<DeclarativeConditionSet> Create(
       const Extension* extension,
       url_matcher::URLMatcherConditionFactory* url_matcher_condition_factory,
-      const Values& condition_values,
+      const base::Value::List& condition_values,
       std::string* error);
 
   const Conditions& conditions() const {
@@ -143,7 +142,6 @@
 template<typename ActionT>
 class DeclarativeActionSet {
  public:
-  using Values = std::vector<base::Value>;
   using Actions = std::vector<scoped_refptr<const ActionT>>;
 
   explicit DeclarativeActionSet(const Actions& actions);
@@ -157,7 +155,7 @@
   static std::unique_ptr<DeclarativeActionSet> Create(
       content::BrowserContext* browser_context,
       const Extension* extension,
-      const Values& action_values,
+      const base::Value::List& action_values,
       std::string* error,
       bool* bad_message);
 
@@ -307,7 +305,7 @@
 DeclarativeConditionSet<ConditionT>::Create(
     const Extension* extension,
     url_matcher::URLMatcherConditionFactory* url_matcher_condition_factory,
-    const Values& condition_values,
+    const base::Value::List& condition_values,
     std::string* error) {
   Conditions result;
 
@@ -361,7 +359,7 @@
 std::unique_ptr<DeclarativeActionSet<ActionT>>
 DeclarativeActionSet<ActionT>::Create(content::BrowserContext* browser_context,
                                       const Extension* extension,
-                                      const Values& action_values,
+                                      const base::Value::List& action_values,
                                       std::string* error,
                                       bool* bad_message) {
   *error = "";
diff --git a/extensions/browser/api/declarative/declarative_rule_unittest.cc b/extensions/browser/api/declarative/declarative_rule_unittest.cc
index a366a768..698965a 100644
--- a/extensions/browser/api/declarative/declarative_rule_unittest.cc
+++ b/extensions/browser/api/declarative/declarative_rule_unittest.cc
@@ -66,9 +66,9 @@
 
 TEST(DeclarativeConditionTest, ErrorConditionSet) {
   URLMatcher matcher;
-  RecordingConditionSet::Values conditions;
-  conditions.push_back(ParseJson("{\"key\": 1}"));
-  conditions.push_back(ParseJson("{\"bad_key\": 2}"));
+  base::Value::List conditions;
+  conditions.Append(ParseJson("{\"key\": 1}"));
+  conditions.Append(ParseJson("{\"bad_key\": 2}"));
 
   std::string error;
   std::unique_ptr<RecordingConditionSet> result = RecordingConditionSet::Create(
@@ -79,9 +79,9 @@
 
 TEST(DeclarativeConditionTest, CreateConditionSet) {
   URLMatcher matcher;
-  RecordingConditionSet::Values conditions;
-  conditions.push_back(ParseJson("{\"key\": 1}"));
-  conditions.push_back(ParseJson("[\"val1\", 2]"));
+  base::Value::List conditions;
+  conditions.Append(ParseJson("{\"key\": 1}"));
+  conditions.Append(ParseJson("[\"val1\", 2]"));
 
   // Test insertion
   std::string error;
@@ -157,11 +157,11 @@
 
 TEST(DeclarativeConditionTest, FulfillConditionSet) {
   typedef DeclarativeConditionSet<FulfillableCondition> FulfillableConditionSet;
-  FulfillableConditionSet::Values conditions;
-  conditions.push_back(ParseJson("{\"url_id\": 1, \"max\": 3}"));
-  conditions.push_back(ParseJson("{\"url_id\": 2, \"max\": 5}"));
-  conditions.push_back(ParseJson("{\"url_id\": 3, \"max\": 1}"));
-  conditions.push_back(ParseJson("{\"max\": -5}"));  // No url.
+  base::Value::List conditions;
+  conditions.Append(ParseJson("{\"url_id\": 1, \"max\": 3}"));
+  conditions.Append(ParseJson("{\"url_id\": 2, \"max\": 5}"));
+  conditions.Append(ParseJson("{\"url_id\": 3, \"max\": 1}"));
+  conditions.Append(ParseJson("{\"max\": -5}"));  // No url.
 
   // Test insertion
   std::string error;
@@ -258,9 +258,9 @@
 typedef DeclarativeActionSet<SummingAction> SummingActionSet;
 
 TEST(DeclarativeActionTest, ErrorActionSet) {
-  SummingActionSet::Values actions;
-  actions.push_back(ParseJson("{\"value\": 1}"));
-  actions.push_back(ParseJson("{\"error\": \"the error\"}"));
+  base::Value::List actions;
+  actions.Append(ParseJson("{\"value\": 1}"));
+  actions.Append(ParseJson("{\"error\": \"the error\"}"));
 
   std::string error;
   bool bad = false;
@@ -271,8 +271,8 @@
   EXPECT_FALSE(result);
 
   actions.clear();
-  actions.push_back(ParseJson("{\"value\": 1}"));
-  actions.push_back(ParseJson("{\"bad\": 3}"));
+  actions.Append(ParseJson("{\"value\": 1}"));
+  actions.Append(ParseJson("{\"bad\": 3}"));
   result = SummingActionSet::Create(nullptr, nullptr, actions, &error, &bad);
   EXPECT_EQ("", error);
   EXPECT_TRUE(bad);
@@ -280,9 +280,9 @@
 }
 
 TEST(DeclarativeActionTest, ApplyActionSet) {
-  SummingActionSet::Values actions;
-  actions.push_back(ParseJson("{\"value\": 1, \"priority\": 5}"));
-  actions.push_back(ParseJson("{\"value\": 2}"));
+  base::Value::List actions;
+  actions.Append(ParseJson("{\"value\": 1, \"priority\": 5}"));
+  actions.Append(ParseJson("{\"value\": 2}"));
 
   // Test insertion
   std::string error;
diff --git a/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc b/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
index 5453aba..9633958 100644
--- a/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
+++ b/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
@@ -215,8 +215,8 @@
 TEST(WebRequestConditionTest, CreateConditionSet) {
   URLMatcher matcher;
 
-  WebRequestConditionSet::Values conditions;
-  conditions.push_back(base::test::ParseJson(
+  base::Value::List conditions;
+  conditions.Append(base::test::ParseJson(
       "{ \n"
       "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
       "  \"url\": { \n"
@@ -224,7 +224,7 @@
       "    \"schemes\": [\"http\"], \n"
       "  }, \n"
       "}"));
-  conditions.push_back(base::test::ParseJson(
+  conditions.Append(base::test::ParseJson(
       "{ \n"
       "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
       "  \"url\": { \n"
@@ -285,8 +285,8 @@
 TEST(WebRequestConditionTest, TestPortFilter) {
   URLMatcher matcher;
 
-  WebRequestConditionSet::Values conditions;
-  conditions.push_back(base::test::ParseJson(
+  base::Value::List conditions;
+  conditions.Append(base::test::ParseJson(
       "{ \n"
       "  \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
       "  \"url\": { \n"
diff --git a/extensions/browser/extension_util.h b/extensions/browser/extension_util.h
index 69c11fe..b69a06d 100644
--- a/extensions/browser/extension_util.h
+++ b/extensions/browser/extension_util.h
@@ -99,7 +99,7 @@
 // `BrowserContext::UniqueId()` directly.
 // TODO(crbug.com/1444279):  Migrate callers to use the `context` unique id
 // directly. For that we need to update all data keyed by integer context ids to
-// be keyed by strings instead
+// be keyed by strings instead.
 int GetBrowserContextId(content::BrowserContext* context);
 
 // Returns whether the |extension| should be loaded in the given
diff --git a/extensions/common/api/declarative/declarative_manifest_data.cc b/extensions/common/api/declarative/declarative_manifest_data.cc
index 98d5945a..ff223e2 100644
--- a/extensions/common/api/declarative/declarative_manifest_data.cc
+++ b/extensions/common/api/declarative/declarative_manifest_data.cc
@@ -48,7 +48,7 @@
 // the manifest key for the internal key.
 bool ConvertManifestRule(DeclarativeManifestData::Rule& rule,
                          ErrorBuilder* error_builder) {
-  auto convert_list = [error_builder](std::vector<base::Value>& list) {
+  auto convert_list = [error_builder](base::Value::List& list) {
     for (base::Value& value : list) {
       base::Value::Dict* dictionary = value.GetIfDict();
       if (!dictionary) {
diff --git a/extensions/common/api/file_handlers.idl b/extensions/common/api/file_handlers.idl
index 29bd585..4d27688 100644
--- a/extensions/common/api/file_handlers.idl
+++ b/extensions/common/api/file_handlers.idl
@@ -41,7 +41,8 @@
     Icon[]? icons;
 
     // Whether multiple files should be opened in a single client or multiple.
-    // Defaults to `single-client`.
+    // Defaults to `single-client`, which opens one window containing one array
+    // with each file. `multiple-clients` opens a new window for each file.
     DOMString? launch_type;
   };
 
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index c6eef3f..22be43a 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -55105,6 +55105,7 @@
         '      "dimensions": {'
         '        "builder": "Android x64 Builder (dbg)",'
         '        "builderless": "",'
+        '        "free_space": "",'
         '        "ssd": ""'
         '      },'
         '      "tester_filter": {'
diff --git a/infra/config/subprojects/reviver/reviver.star b/infra/config/subprojects/reviver/reviver.star
index 70d328a6..5bbd087 100644
--- a/infra/config/subprojects/reviver/reviver.star
+++ b/infra/config/subprojects/reviver/reviver.star
@@ -84,6 +84,7 @@
             dimensions = dimensions.dimensions(
                 builderless = "",
                 ssd = "",
+                free_space = "",
                 builder = "Android x64 Builder (dbg)",
             ),
             testers = [
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index 454c55c..60c1e426 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -93,7 +93,7 @@
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h"
 #import "ios/chrome/browser/ui/download/features.h"
 #import "ios/chrome/browser/ui/ntp/new_tab_page_feature.h"
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_constants.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial_constants.h"
 #import "ios/chrome/browser/ui/omnibox/omnibox_ui_features.h"
 #import "ios/chrome/browser/ui/popup_menu/overflow_menu/feature_flags.h"
 #import "ios/chrome/browser/ui/post_restore_signin/features.h"
@@ -372,6 +372,28 @@
      std::size(kMagicStackReducedNTPTopSpace), nullptr},
 };
 
+const FeatureEntry::FeatureParam kHideAllContentSuggestionsTilesAll[] = {
+    {kHideContentSuggestionsTilesParamMostVisited, "true"},
+    {kHideContentSuggestionsTilesParamShortcuts, "true"},
+};
+const FeatureEntry::FeatureParam kHideAllContentSuggestionsTilesMVT[] = {
+    {kHideContentSuggestionsTilesParamMostVisited, "true"},
+    {kHideContentSuggestionsTilesParamShortcuts, "false"},
+};
+const FeatureEntry::FeatureParam kHideAllContentSuggestionsTilesShortcuts[] = {
+    {kHideContentSuggestionsTilesParamMostVisited, "false"},
+    {kHideContentSuggestionsTilesParamShortcuts, "true"},
+};
+
+const FeatureEntry::FeatureVariation kHideContentSuggestionTilesVariations[]{
+    {"Hide all tiles", kHideAllContentSuggestionsTilesAll,
+     std::size(kHideAllContentSuggestionsTilesAll), nullptr},
+    {"Hide Most Visited tiles", kHideAllContentSuggestionsTilesMVT,
+     std::size(kHideAllContentSuggestionsTilesMVT), nullptr},
+    {"Hide Shortcuts tiles", kHideAllContentSuggestionsTilesShortcuts,
+     std::size(kHideAllContentSuggestionsTilesShortcuts), nullptr},
+};
+
 #if BUILDFLAG(IOS_BACKGROUND_MODE_ENABLED)
 // Feed Background Refresh Feature Params.
 const FeatureEntry::FeatureParam kOneHourIntervalOneHourMaxAgeOnce[] = {
@@ -510,16 +532,17 @@
     {{"minimal", kIOSNewPostRestoreExperienceMinimal,
       std::size(kIOSNewPostRestoreExperienceMinimal), nullptr}};
 
-const FeatureEntry::FeatureParam kNewTabPageRetentionTileAblationHideAll[] = {
-    {ntp_tiles::kNewTabPageRetentionParam, "1"}};
-const FeatureEntry::FeatureParam kNewTabPageRetentionTileAblationHideMVTOnly[] =
-    {{ntp_tiles::kNewTabPageRetentionParam, "2"}};
-const FeatureEntry::FeatureVariation kNewTabPageRetentionVariations[] = {
-    {"- Tile ablation, Hide all", kNewTabPageRetentionTileAblationHideAll,
-     std::size(kNewTabPageRetentionTileAblationHideAll), nullptr},
+const FeatureEntry::FeatureParam kNewTabPageFieldTrialTileAblationHideAll[] = {
+    {ntp_tiles::kNewTabPageFieldTrialParam, "1"}};
+const FeatureEntry::FeatureParam
+    kNewTabPageFieldTrialTileAblationHideMVTOnly[] = {
+        {ntp_tiles::kNewTabPageFieldTrialParam, "2"}};
+const FeatureEntry::FeatureVariation kNewTabPageFieldTrialVariations[] = {
+    {"- Tile ablation, Hide all", kNewTabPageFieldTrialTileAblationHideAll,
+     std::size(kNewTabPageFieldTrialTileAblationHideAll), nullptr},
     {"- Tile ablation, Hide MVT only",
-     kNewTabPageRetentionTileAblationHideMVTOnly,
-     std::size(kNewTabPageRetentionTileAblationHideMVTOnly), nullptr}};
+     kNewTabPageFieldTrialTileAblationHideMVTOnly,
+     std::size(kNewTabPageFieldTrialTileAblationHideMVTOnly), nullptr}};
 
 const FeatureEntry::FeatureParam kEnableExpKitTextClassifierDate[] = {
     {"date", "true"}};
@@ -602,11 +625,6 @@
 const FeatureEntry::FeatureParam
     kCredentialProviderExtensionPromoOnLoginWithAutofill[] = {
         {kCredentialProviderExtensionPromoOnLoginWithAutofillParam, "true"}};
-const FeatureEntry::FeatureParam
-    kCredentialProviderExtensionPromoOnAllTriggers[] = {
-        {kCredentialProviderExtensionPromoOnLoginWithAutofillParam, "true"},
-        {kCredentialProviderExtensionPromoOnPasswordCopiedParam, "true"},
-        {kCredentialProviderExtensionPromoOnPasswordSavedParam, "true"}};
 
 const FeatureEntry::FeatureVariation
     kCredentialProviderExtensionPromoVariations[] = {
@@ -619,8 +637,6 @@
          kCredentialProviderExtensionPromoOnLoginWithAutofill,
          std::size(kCredentialProviderExtensionPromoOnLoginWithAutofill),
          nullptr},
-        {"On all triggers", kCredentialProviderExtensionPromoOnAllTriggers,
-         std::size(kCredentialProviderExtensionPromoOnAllTriggers), nullptr},
 };
 
 const FeatureEntry::FeatureParam kIOSEditMenuPartialTranslateNoIncognito[] = {
@@ -1115,11 +1131,11 @@
      flag_descriptions::kIOSPasswordBottomSheetName,
      flag_descriptions::kIOSPasswordBottomSheetDescription, flags_ui::kOsIos,
      FEATURE_VALUE_TYPE(password_manager::features::kIOSPasswordBottomSheet)},
-    {"ios-new-tab-page-retention", flag_descriptions::kNewTabPageRetentionName,
-     flag_descriptions::kNewTabPageRetentionDescription, flags_ui::kOsIos,
-     FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_tiles::kNewTabPageRetention,
-                                    kNewTabPageRetentionVariations,
-                                    ntp_tiles::kNewTabPageRetentionName)},
+    {"ios-new-tab-page-retention", flag_descriptions::kNewTabPageFieldTrialName,
+     flag_descriptions::kNewTabPageFieldTrialDescription, flags_ui::kOsIos,
+     FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_tiles::kNewTabPageFieldTrial,
+                                    kNewTabPageFieldTrialVariations,
+                                    ntp_tiles::kNewTabPageFieldTrialName)},
     {"autofill-parse-iban-fields",
      flag_descriptions::kAutofillParseIBANFieldsName,
      flag_descriptions::kAutofillParseIBANFieldsDescription, flags_ui::kOsIos,
@@ -1527,6 +1543,14 @@
      flag_descriptions::kReplaceSyncPromosWithSignInPromosName,
      flag_descriptions::kReplaceSyncPromosWithSignInPromosDescription,
      flags_ui::kOsIos, FEATURE_VALUE_TYPE(kReplaceSyncPromosWithSignInPromos)},
+    {"hide-content-suggestions-tiles",
+     flag_descriptions::kHideContentSuggestionTilesName,
+     flag_descriptions::kHideContentSuggestionTilesDescription,
+     flags_ui::kOsIos,
+     FEATURE_WITH_PARAMS_VALUE_TYPE(
+         kHideContentSuggestionsTiles,
+         kHideContentSuggestionTilesVariations,
+         flag_descriptions::kHideContentSuggestionTilesName)},
 };
 
 bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
diff --git a/ios/chrome/browser/flags/ios_chrome_field_trials.mm b/ios/chrome/browser/flags/ios_chrome_field_trials.mm
index d225c76..3037fbe 100644
--- a/ios/chrome/browser/flags/ios_chrome_field_trials.mm
+++ b/ios/chrome/browser/flags/ios_chrome_field_trials.mm
@@ -10,7 +10,7 @@
 #import "ios/chrome/app/tests_hook.h"
 #import "ios/chrome/browser/paths/paths.h"
 #import "ios/chrome/browser/shared/model/application_context/application_context.h"
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h"
 #import "ios/chrome/browser/ui/ntp/synced_segments_field_trial.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -38,9 +38,9 @@
     return;
   }
 
-  new_tab_page_retention_field_trial::Create(
-      entropy_providers.low_entropy(), feature_list,
-      GetApplicationContext()->GetLocalState());
+  new_tab_page_field_trial::Create(entropy_providers.low_entropy(),
+                                   feature_list,
+                                   GetApplicationContext()->GetLocalState());
   synced_segments_field_trial::Create(entropy_providers.low_entropy(),
                                       feature_list,
                                       GetApplicationContext()->GetLocalState());
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
index 01c262c..3874af7 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -487,6 +487,11 @@
     "When enabled, the web view's insets are updated for scoll events. If "
     "disabled, the the web view's frame are updated.";
 
+extern const char kHideContentSuggestionTilesName[] =
+    "Hide content suggestions tiles";
+extern const char kHideContentSuggestionTilesDescription[] =
+    "Hides content suggestions tiles from the new tab page.";
+
 extern const char kHistorySyncOptInName[] = "History Sync Opt-In";
 extern const char kHistorySyncOptInDescription[] =
     "Enables history sync opt-in";
@@ -568,9 +573,9 @@
 const char kIOSPasswordBottomSheetDescription[] =
     "Enables the display of the password bottom sheet on IOS.";
 
-const char kNewTabPageRetentionName[] =
+const char kNewTabPageFieldTrialName[] =
     "New tab page features that target new users";
-const char kNewTabPageRetentionDescription[] =
+const char kNewTabPageFieldTrialDescription[] =
     "Enables new tab page features that are available on first run for new "
     "Chrome iOS users.";
 
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
index 79cb2526..0159cbe3 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -415,6 +415,11 @@
 extern const char kFullscreenSmoothScrollingName[];
 extern const char kFullscreenSmoothScrollingDescription[];
 
+// Title and description for the flag that hides the content suggestion tiles
+// from the NTP.
+extern const char kHideContentSuggestionTilesName[];
+extern const char kHideContentSuggestionTilesDescription[];
+
 // Title and description for the flag to enable history-sync opt-in.
 extern const char kHistorySyncOptInName[];
 extern const char kHistorySyncOptInDescription[];
@@ -493,8 +498,8 @@
 
 // Title and description of the flag to enable client side new tab page
 // experiments aimed at improving user retention.
-extern const char kNewTabPageRetentionName[];
-extern const char kNewTabPageRetentionDescription[];
+extern const char kNewTabPageFieldTrialName[];
+extern const char kNewTabPageFieldTrialDescription[];
 
 // Title and description for the flag to enable Shared Highlighting color
 // change in iOS.
diff --git a/ios/chrome/browser/ntp/set_up_list.mm b/ios/chrome/browser/ntp/set_up_list.mm
index 5c27858..9cae36f 100644
--- a/ios/chrome/browser/ntp/set_up_list.mm
+++ b/ios/chrome/browser/ntp/set_up_list.mm
@@ -34,7 +34,8 @@
     case SetUpListItemType::kAutofill:
       return password_manager_util::IsCredentialProviderEnabledOnStartup(prefs);
     case SetUpListItemType::kFollow:
-      return false;
+    case SetUpListItemType::kAllSet:
+      NOTREACHED_NORETURN();
   }
 }
 
diff --git a/ios/chrome/browser/ntp/set_up_list_item_type.h b/ios/chrome/browser/ntp/set_up_list_item_type.h
index d558add..e1d3147 100644
--- a/ios/chrome/browser/ntp/set_up_list_item_type.h
+++ b/ios/chrome/browser/ntp/set_up_list_item_type.h
@@ -12,8 +12,8 @@
   kDefaultBrowser = 2,
   kAutofill = 3,
   kFollow = 4,
-
-  kMaxValue = kFollow
+  kAllSet = 5,
+  kMaxValue = kAllSet
 };
 
 #endif  // IOS_CHROME_BROWSER_NTP_SET_UP_LIST_ITEM_TYPE_H_
diff --git a/ios/chrome/browser/ntp/set_up_list_prefs.h b/ios/chrome/browser/ntp/set_up_list_prefs.h
index 9e94e66..a8288e6 100644
--- a/ios/chrome/browser/ntp/set_up_list_prefs.h
+++ b/ios/chrome/browser/ntp/set_up_list_prefs.h
@@ -5,6 +5,9 @@
 #ifndef IOS_CHROME_BROWSER_NTP_SET_UP_LIST_PREFS_H_
 #define IOS_CHROME_BROWSER_NTP_SET_UP_LIST_PREFS_H_
 
+namespace base {
+class Time;
+}
 class PrefRegistrySimple;
 class PrefService;
 enum class SetUpListItemType;
@@ -54,5 +57,12 @@
 // Disables the SetUpList.
 void DisableSetUpList(PrefService* prefs);
 
+// Stores the current time as the "last interaction" time for SetUpList.
+void RecordInteraction(PrefService* prefs);
+
+// Returns the "last interaction" time for Set Up List.
+base::Time GetLastInteraction(PrefService* prefs);
+
 }  // namespace set_up_list_prefs
+
 #endif  // IOS_CHROME_BROWSER_NTP_SET_UP_LIST_PREFS_H_
diff --git a/ios/chrome/browser/ntp/set_up_list_prefs.mm b/ios/chrome/browser/ntp/set_up_list_prefs.mm
index 49b4df1c..1467096 100644
--- a/ios/chrome/browser/ntp/set_up_list_prefs.mm
+++ b/ios/chrome/browser/ntp/set_up_list_prefs.mm
@@ -21,6 +21,7 @@
 const char kAutofillItemState[] = "set_up_list.autofill_item.state";
 const char kFollowItemState[] = "set_up_list.follow_item.state";
 const char kDisabled[] = "set_up_list.disabled";
+const char kLastInteraction[] = "set_up_list.last_interaction";
 
 void RegisterPrefs(PrefRegistrySimple* registry) {
   int unknown = static_cast<int>(SetUpListItemState::kUnknown);
@@ -29,6 +30,7 @@
   registry->RegisterIntegerPref(kAutofillItemState, unknown);
   registry->RegisterIntegerPref(kFollowItemState, unknown);
   registry->RegisterBooleanPref(kDisabled, false);
+  registry->RegisterTimePref(kLastInteraction, base::Time());
 }
 
 const char* PrefNameForItem(SetUpListItemType type) {
@@ -41,6 +43,8 @@
       return kAutofillItemState;
     case SetUpListItemType::kFollow:
       return kFollowItemState;
+    case SetUpListItemType::kAllSet:
+      NOTREACHED_NORETURN();
   }
 }
 
@@ -79,4 +83,12 @@
   prefs->SetBoolean(kDisabled, true);
 }
 
+void RecordInteraction(PrefService* prefs) {
+  prefs->SetTime(kLastInteraction, base::Time::Now());
+}
+
+base::Time GetLastInteraction(PrefService* prefs) {
+  return prefs->GetTime(kLastInteraction);
+}
+
 }  // namespace set_up_list_prefs
diff --git a/ios/chrome/browser/shared/coordinator/alert/alert_coordinator.mm b/ios/chrome/browser/shared/coordinator/alert/alert_coordinator.mm
index 44a2ccb3..defb77b 100644
--- a/ios/chrome/browser/shared/coordinator/alert/alert_coordinator.mm
+++ b/ios/chrome/browser/shared/coordinator/alert/alert_coordinator.mm
@@ -103,7 +103,7 @@
                              }];
 
   alertAction.accessibilityIdentifier =
-      [NSString stringWithFormat:@"%@%@", title, @"AlertAction"];
+      [title stringByAppendingString:@"AlertAction"];
   alertAction.enabled = enabled;
 
   [self.alertController addAction:alertAction];
diff --git a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
index 61fc69eb..be46b2f 100644
--- a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
+++ b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
@@ -74,7 +74,7 @@
 #import "ios/chrome/browser/ui/bookmarks/bookmark_path_cache.h"
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.h"
 #import "ios/chrome/browser/ui/incognito_reauth/incognito_reauth_scene_agent.h"
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h"
 #import "ios/chrome/browser/ui/ntp/synced_segments_field_trial.h"
 #import "ios/chrome/browser/voice/voice_search_prefs_registration.h"
 #import "ios/chrome/browser/web/font_size/font_size_tab_helper.h"
@@ -146,7 +146,7 @@
   set_up_list_prefs::RegisterPrefs(registry);
   update_client::RegisterPrefs(registry);
   variations::VariationsService::RegisterPrefs(registry);
-  new_tab_page_retention_field_trial::RegisterLocalStatePrefs(registry);
+  new_tab_page_field_trial::RegisterLocalStatePrefs(registry);
   synced_segments_field_trial::RegisterLocalStatePrefs(registry);
   component_updater::RegisterComponentUpdateServicePrefs(registry);
   component_updater::AutofillStatesComponentInstallerPolicy::RegisterPrefs(
diff --git a/ios/chrome/browser/shared/ui/symbols/symbol_names.h b/ios/chrome/browser/shared/ui/symbols/symbol_names.h
index 39d692a..03e287e 100644
--- a/ios/chrome/browser/shared/ui/symbols/symbol_names.h
+++ b/ios/chrome/browser/shared/ui/symbols/symbol_names.h
@@ -123,6 +123,7 @@
 extern NSString* const kInfoCircleSymbol;
 extern NSString* const kHistorySymbol;
 extern NSString* const kCheckmarkSealSymbol;
+extern NSString* const kCheckmarkSealFillSymbol;
 extern NSString* const kWifiSymbol;
 extern NSString* const kBookmarksSymbol;
 extern NSString* const kSyncErrorSymbol;
diff --git a/ios/chrome/browser/shared/ui/symbols/symbol_names.mm b/ios/chrome/browser/shared/ui/symbols/symbol_names.mm
index 7977701..1fb9bea0 100644
--- a/ios/chrome/browser/shared/ui/symbols/symbol_names.mm
+++ b/ios/chrome/browser/shared/ui/symbols/symbol_names.mm
@@ -115,6 +115,7 @@
 NSString* const kInfoCircleSymbol = @"info.circle";
 NSString* const kHistorySymbol = @"clock.arrow.circlepath";
 NSString* const kCheckmarkSealSymbol = @"checkmark.seal";
+NSString* const kCheckmarkSealFillSymbol = @"checkmark.seal.fill";
 NSString* const kWifiSymbol = @"wifi";
 NSString* const kBookmarksSymbol = @"star";
 NSString* const kSyncErrorSymbol =
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
index eb645ff..bd8c57e 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
@@ -241,11 +241,17 @@
 // Converts NSString entered by the user to a GURL.
 GURL ConvertUserDataToGURL(NSString* urlString);
 
+// Uses `IsBookmarked` to check whether `url` is bookmarked in any of the
+// provided bookmark models. `account_model` can be null.
+bool IsBookmarked(const GURL& url,
+                  bookmarks::BookmarkModel* local_model,
+                  bookmarks::BookmarkModel* account_model);
+
 // Uses `GetMostRecentlyAddedUserNodeForURL` to find the most recently added
 // bookmark node with the corresponding URL in both models. If both models
 // contain matching entries - compares them and returns the most recently added
 // entry. If only one model has a matching entry - returns that entry. If no
-// models contain matching entries - returns null.
+// models contain matching entries - returns null. `account_model` can be null.
 const bookmarks::BookmarkNode* GetMostRecentlyAddedUserNodeForURL(
     const GURL& url,
     bookmarks::BookmarkModel* local_model,
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
index 9b28cddf..0f25b923 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
@@ -781,17 +781,26 @@
   }
 }
 
+bool IsBookmarked(const GURL& url,
+                  bookmarks::BookmarkModel* local_model,
+                  bookmarks::BookmarkModel* account_model) {
+  CHECK(local_model);
+  if (local_model->IsBookmarked(url)) {
+    return true;
+  }
+  return account_model && account_model->IsBookmarked(url);
+}
+
 const BookmarkNode* GetMostRecentlyAddedUserNodeForURL(
     const GURL& url,
     bookmarks::BookmarkModel* local_model,
     bookmarks::BookmarkModel* account_model) {
+  CHECK(local_model);
   const BookmarkNode* local_bookmark =
       local_model->GetMostRecentlyAddedUserNodeForURL(url);
-  if (!account_model) {
-    return local_bookmark;
-  }
   const BookmarkNode* account_bookmark =
-      account_model->GetMostRecentlyAddedUserNodeForURL(url);
+      account_model ? account_model->GetMostRecentlyAddedUserNodeForURL(url)
+                    : nullptr;
   if (local_bookmark && account_bookmark) {
     // Found bookmarks in both models, return one that was added more recently.
     return local_bookmark->date_added() > account_bookmark->date_added()
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios_unittest.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios_unittest.mm
index 8e25c86..d1289cee5 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios_unittest.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios_unittest.mm
@@ -457,6 +457,62 @@
                 &sync_setup_service));
 }
 
+TEST_P(BookmarkIOSUtilsUnitTest, IsBookmarkedNoMatches) {
+  AddBookmark(profile_bookmark_model_->mobile_node(), u"a",
+              GURL("http://example.com/a"));
+  if (IsAccountStorageEnabled()) {
+    AddBookmark(account_bookmark_model_->mobile_node(), u"b",
+                GURL("http://example.com/b"));
+  }
+
+  EXPECT_FALSE(bookmark_utils_ios::IsBookmarked(GURL("http://example.com/c"),
+                                                profile_bookmark_model_,
+                                                account_bookmark_model_));
+}
+
+TEST_P(BookmarkIOSUtilsUnitTest, IsBookmarkedLocalMatch) {
+  AddBookmark(profile_bookmark_model_->mobile_node(), u"a",
+              GURL("http://example.com/a"));
+  if (IsAccountStorageEnabled()) {
+    AddBookmark(account_bookmark_model_->mobile_node(), u"b",
+                GURL("http://example.com/b"));
+  }
+
+  EXPECT_TRUE(bookmark_utils_ios::IsBookmarked(GURL("http://example.com/a"),
+                                               profile_bookmark_model_,
+                                               account_bookmark_model_));
+}
+
+TEST_P(BookmarkIOSUtilsUnitTest, IsBookmarkedAccountMatch) {
+  if (!IsAccountStorageEnabled()) {
+    GTEST_SKIP() << "Need account storage to test matches in that storage";
+  }
+
+  AddBookmark(profile_bookmark_model_->mobile_node(), u"a",
+              GURL("http://example.com/a"));
+  AddBookmark(account_bookmark_model_->mobile_node(), u"b",
+              GURL("http://example.com/b"));
+
+  EXPECT_TRUE(bookmark_utils_ios::IsBookmarked(GURL("http://example.com/b"),
+                                               profile_bookmark_model_,
+                                               account_bookmark_model_));
+}
+
+TEST_P(BookmarkIOSUtilsUnitTest, IsBookmarkedBothStoragesMatch) {
+  if (!IsAccountStorageEnabled()) {
+    GTEST_SKIP() << "Need account storage to test matches in both storages";
+  }
+
+  AddBookmark(profile_bookmark_model_->mobile_node(), u"a",
+              GURL("http://example.com/a"));
+  AddBookmark(account_bookmark_model_->mobile_node(), u"b",
+              GURL("http://example.com/a"));
+
+  EXPECT_TRUE(bookmark_utils_ios::IsBookmarked(GURL("http://example.com/a"),
+                                               profile_bookmark_model_,
+                                               account_bookmark_model_));
+}
+
 TEST_P(BookmarkIOSUtilsUnitTest, GetMostRecentlyAddedNoMatchingBookmarks) {
   AddBookmark(profile_bookmark_model_->mobile_node(), u"a",
               GURL("http://example.com/a"));
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn
index d26ca9a9..1a824d8 100644
--- a/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn
+++ b/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn
@@ -4,8 +4,6 @@
 
 source_set("cells") {
   sources = [
-    "action_list_module.h",
-    "action_list_module.mm",
     "content_suggestions_gesture_commands.h",
     "content_suggestions_most_visited_action_item.h",
     "content_suggestions_most_visited_action_item.mm",
@@ -28,8 +26,8 @@
     "content_suggestions_tile_view.mm",
     "magic_stack_module_container.h",
     "magic_stack_module_container.mm",
-    "multi_row_module.h",
-    "multi_row_module.mm",
+    "multi_row_container_view.h",
+    "multi_row_container_view.mm",
     "query_suggestion_view.h",
     "query_suggestion_view.mm",
     "suggested_content.h",
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/action_list_module.h b/ios/chrome/browser/ui/content_suggestions/cells/action_list_module.h
deleted file mode 100644
index 0da944b..0000000
--- a/ios/chrome/browser/ui/content_suggestions/cells/action_list_module.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_ACTION_LIST_MODULE_H_
-#define IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_ACTION_LIST_MODULE_H_
-
-#import "ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h"
-
-// Module implementation intended to display four horizontally-laid out content
-// elements, but can be used for any module that needs a title above some
-// content.
-@interface ActionListModule : MagicStackModuleContainer
-
-// Initializes and configures this view to contain `contentView` and configure
-// for `type`. If `contentView` is a UIView, it will need to either define it's
-// intrinsicContentSize or set its own vertical/horizontal constraints.
-- (instancetype)initWithContentView:(UIView*)contentView
-                               type:(ContentSuggestionsModuleType)type;
-
-@end
-
-#endif  // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_ACTION_LIST_MODULE_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/action_list_module.mm b/ios/chrome/browser/ui/content_suggestions/cells/action_list_module.mm
deleted file mode 100644
index aad9b36..0000000
--- a/ios/chrome/browser/ui/content_suggestions/cells/action_list_module.mm
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "ios/chrome/browser/ui/content_suggestions/cells/action_list_module.h"
-
-#import "ios/chrome/common/ui/colors/semantic_color_names.h"
-#import "ios/chrome/common/ui/util/constraints_ui_util.h"
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-namespace {
-
-// Vertical spacing between the content views.
-const float kContentVerticalSpacing = 12.0f;
-
-// The horizontal inset for the content within this container.
-const float kContentHorizontalInset = 16.0f;
-
-// The top inset for the content within this container.
-const float kContentTopInset = 14.0f;
-
-// The bottom inset for the content within this container.
-const float kContentBottomInset = 10.0f;
-
-}  // namespace
-
-@implementation ActionListModule {
-  NSLayoutConstraint* _contentViewWidthAnchor;
-}
-
-- (instancetype)initWithContentView:(UIView*)contentView
-                               type:(ContentSuggestionsModuleType)type {
-  self = [super initWithType:type];
-  if (self) {
-    UILabel* title = [[UILabel alloc] init];
-    title.text = [MagicStackModuleContainer titleStringForModule:type];
-    title.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote];
-    title.textColor = [UIColor colorNamed:kTextPrimaryColor];
-    title.accessibilityTraits |= UIAccessibilityTraitHeader;
-    title.accessibilityIdentifier =
-        [MagicStackModuleContainer titleStringForModule:type];
-
-    UIStackView* stackView = [[UIStackView alloc] init];
-    stackView.translatesAutoresizingMaskIntoConstraints = NO;
-    stackView.alignment = UIStackViewAlignmentLeading;
-    stackView.axis = UILayoutConstraintAxisVertical;
-    stackView.spacing = kContentVerticalSpacing;
-    stackView.distribution = UIStackViewDistributionFill;
-    [stackView addArrangedSubview:title];
-    [stackView addArrangedSubview:contentView];
-
-    self.accessibilityElements = @[ title, contentView ];
-
-    _contentViewWidthAnchor = [contentView.widthAnchor
-        constraintEqualToConstant:[self contentViewWidth]];
-    [NSLayoutConstraint activateConstraints:@[ _contentViewWidthAnchor ]];
-
-    [self addSubview:stackView];
-    NSDirectionalEdgeInsets contentInsets = NSDirectionalEdgeInsetsMake(
-        kContentTopInset, kContentHorizontalInset, kContentBottomInset,
-        kContentHorizontalInset);
-    AddSameConstraintsWithInsets(stackView, self, contentInsets);
-  }
-  return self;
-}
-
-#pragma mark - UITraitEnvironment
-
-- (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
-  [super traitCollectionDidChange:previousTraitCollection];
-  if (previousTraitCollection.horizontalSizeClass !=
-      self.traitCollection.horizontalSizeClass) {
-    _contentViewWidthAnchor.constant = [self contentViewWidth];
-  }
-}
-
-#pragma mark - Helpers
-
-// Returns the expected width of the contentView subview.
-- (CGFloat)contentViewWidth {
-  // Give content the same width as the StackView, which is inset from this
-  // container view.
-  return [MagicStackModuleContainer
-             moduleWidthForHorizontalTraitCollection:self.traitCollection] -
-         (kContentHorizontalInset * 2);
-}
-
-@end
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h b/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h
index d5bf64c3..52940017 100644
--- a/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h
+++ b/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h
@@ -12,8 +12,9 @@
 // Container View for a module in the Magic Stack.
 @interface MagicStackModuleContainer : UIView
 
-// Initialize and configure for `type`.
-- (instancetype)initWithType:(ContentSuggestionsModuleType)type;
+// Initialize and configure with `contentView` for `type`.
+- (instancetype)initWithContentView:(UIView*)contentView
+                               type:(ContentSuggestionsModuleType)type;
 - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
 - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE;
 
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.mm b/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.mm
index f20b145..f1e5e6d7 100644
--- a/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.mm
+++ b/ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.mm
@@ -8,6 +8,7 @@
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h"
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
+#import "ios/chrome/common/ui/util/constraints_ui_util.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util_mac.h"
 
@@ -17,6 +18,18 @@
 
 namespace {
 
+// The horizontal inset for the content within this container.
+const CGFloat kContentHorizontalInset = 16.0f;
+
+// The top inset for the content within this container.
+const CGFloat kContentTopInset = 14.0f;
+
+// The bottom inset for the content within this container.
+const CGFloat kContentBottomInset = 10.0f;
+
+// Vertical spacing between the content views.
+const float kContentVerticalSpacing = 12.0f;
+
 // The corner radius of this container.
 const float kCornerRadius = 24;
 
@@ -33,14 +46,51 @@
 
 @end
 
-@implementation MagicStackModuleContainer
+@implementation MagicStackModuleContainer {
+  NSLayoutConstraint* _contentViewWidthAnchor;
+}
 
 - (instancetype)initWithType:(ContentSuggestionsModuleType)type {
   self = [super initWithFrame:CGRectZero];
   if (self) {
+  }
+  return self;
+}
+
+- (instancetype)initWithContentView:(UIView*)contentView
+                               type:(ContentSuggestionsModuleType)type {
+  self = [super initWithFrame:CGRectZero];
+  if (self) {
     _type = type;
+
     self.layer.cornerRadius = kCornerRadius;
     self.backgroundColor = [UIColor colorNamed:kBackgroundColor];
+
+    UILabel* title = [[UILabel alloc] init];
+    title.text = [MagicStackModuleContainer titleStringForModule:type];
+    title.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote];
+    title.textColor = [UIColor colorNamed:kTextPrimaryColor];
+    title.accessibilityTraits |= UIAccessibilityTraitHeader;
+    title.accessibilityIdentifier =
+        [MagicStackModuleContainer titleStringForModule:type];
+
+    UIStackView* stackView = [[UIStackView alloc] init];
+    stackView.translatesAutoresizingMaskIntoConstraints = NO;
+    stackView.alignment = UIStackViewAlignmentLeading;
+    stackView.axis = UILayoutConstraintAxisVertical;
+    stackView.spacing = kContentVerticalSpacing;
+    stackView.distribution = UIStackViewDistributionFill;
+    [stackView addArrangedSubview:title];
+    [stackView addArrangedSubview:contentView];
+
+    self.accessibilityElements = @[ title, contentView ];
+
+    _contentViewWidthAnchor = [contentView.widthAnchor
+        constraintEqualToConstant:[self contentViewWidth]];
+    [NSLayoutConstraint activateConstraints:@[ _contentViewWidthAnchor ]];
+
+    [self addSubview:stackView];
+    AddSameConstraintsWithInsets(stackView, self, [self contentMargins]);
   }
   return self;
 }
@@ -67,6 +117,7 @@
     case ContentSuggestionsModuleType::kSetUpListDefaultBrowser:
     case ContentSuggestionsModuleType::kSetUpListAutofill:
     case ContentSuggestionsModuleType::kCompactedSetUpList:
+    case ContentSuggestionsModuleType::kSetUpListAllSet:
       return l10n_util::GetNSString(IDS_IOS_SET_UP_LIST_TITLE);
     default:
       NOTREACHED();
@@ -74,6 +125,16 @@
   }
 }
 
+- (NSDirectionalEdgeInsets)contentMargins {
+  NSDirectionalEdgeInsets contentMargins =
+      NSDirectionalEdgeInsetsMake(kContentTopInset, kContentHorizontalInset,
+                                  kContentBottomInset, kContentHorizontalInset);
+  if (_type == ContentSuggestionsModuleType::kCompactedSetUpList) {
+    contentMargins.trailing = 0;
+  }
+  return contentMargins;
+}
+
 - (CGSize)intrinsicContentSize {
   return CGSizeMake(
       [MagicStackModuleContainer
@@ -81,4 +142,14 @@
       self.bounds.size.height);
 }
 
+#pragma mark - Helpers
+
+// Returns the expected width of the contentView subview.
+- (CGFloat)contentViewWidth {
+  NSDirectionalEdgeInsets insets = [self contentMargins];
+  return [MagicStackModuleContainer
+             moduleWidthForHorizontalTraitCollection:self.traitCollection] -
+         insets.leading - insets.trailing;
+}
+
 @end
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.h b/ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.h
new file mode 100644
index 0000000..4d136ca
--- /dev/null
+++ b/ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.h
@@ -0,0 +1,19 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_MULTI_ROW_CONTAINER_VIEW_H_
+#define IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_MULTI_ROW_CONTAINER_VIEW_H_
+
+#import <UIKit/UIKit.h>
+
+// Container view intended to display multiple rows of elements.
+@interface MultiRowContainerView : UIView
+
+// Initializes and configures this view to contain each element in `views` in a
+// row.
+- (instancetype)initWithViews:(NSArray<UIView*>*)views;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_MULTI_ROW_CONTAINER_VIEW_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.mm b/ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.mm
new file mode 100644
index 0000000..8af20fe1
--- /dev/null
+++ b/ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.mm
@@ -0,0 +1,57 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.h"
+
+#import "ios/chrome/common/ui/colors/semantic_color_names.h"
+#import "ios/chrome/common/ui/util/constraints_ui_util.h"
+#import "ios/chrome/common/ui/util/ui_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+
+const CGFloat kSeparatorHeight = 0.5;
+
+}  // namespace
+
+@implementation MultiRowContainerView
+
+- (instancetype)initWithViews:(NSArray<UIView*>*)views {
+  self = [super initWithFrame:CGRectZero];
+  if (self) {
+    UIStackView* rowsStackView = [[UIStackView alloc] init];
+    rowsStackView.spacing = AlignValueToPixel(8.5);
+    rowsStackView.axis = UILayoutConstraintAxisVertical;
+    rowsStackView.translatesAutoresizingMaskIntoConstraints = NO;
+    rowsStackView.alignment = UIStackViewAlignmentLeading;
+    // Ensures that rows have similar height.
+    rowsStackView.distribution = UIStackViewDistributionFillProportionally;
+    NSUInteger index = 0;
+    for (UIView* view in views) {
+      [rowsStackView addArrangedSubview:view];
+      if (index < [views count] - 1) {
+        UIView* separator = [[UIView alloc] init];
+        separator.backgroundColor = [UIColor colorNamed:kSeparatorColor];
+        [rowsStackView addArrangedSubview:separator];
+        [NSLayoutConstraint activateConstraints:@[
+          [separator.heightAnchor
+              constraintEqualToConstant:AlignValueToPixel(kSeparatorHeight)],
+          [separator.leadingAnchor
+              constraintEqualToAnchor:rowsStackView.leadingAnchor],
+          [separator.trailingAnchor
+              constraintEqualToAnchor:rowsStackView.trailingAnchor],
+        ]];
+      }
+      index++;
+    }
+    [self addSubview:rowsStackView];
+    AddSameConstraints(rowsStackView, self);
+  }
+  return self;
+}
+
+@end
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.h b/ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.h
deleted file mode 100644
index 38c3681..0000000
--- a/ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_MULTI_ROW_MODULE_H_
-#define IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_MULTI_ROW_MODULE_H_
-
-#import "ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h"
-
-// Module implementation intended to display multiple rows of content elements.
-@interface MultiRowModule : MagicStackModuleContainer
-
-// Initializes and configures this view to contain each element in `views` in a
-// row and configure the module for `type`. Note that there is a height limit
-// defined in MagicStackModuleContainer. It is the job of the implementor to
-// ensure `views` are laid out with that in mind.
-- (instancetype)initWithViews:(NSArray<UIView*>*)views
-                         type:(ContentSuggestionsModuleType)type;
-
-@end
-
-#endif  // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CELLS_MULTI_ROW_MODULE_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.mm b/ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.mm
deleted file mode 100644
index b15d2ee1..0000000
--- a/ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.mm
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.h"
-
-#import "ios/chrome/common/ui/colors/semantic_color_names.h"
-#import "ios/chrome/common/ui/util/constraints_ui_util.h"
-#import "ios/chrome/common/ui/util/ui_util.h"
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-namespace {
-
-// Vertical spacing between the title and the content.
-const CGFloat kContentVerticalSpacing = 12.0f;
-
-// The horizontal inset for the content within this container.
-const CGFloat kContentHorizontalInset = 16.0f;
-
-// The top inset for the content within this container.
-const CGFloat kContentTopInset = 14.0f;
-
-// The bottom inset for the content within this container.
-const CGFloat kContentBottomInset = 10.0f;
-
-const CGFloat kSeparatorHeight = 0.5;
-
-}  // namespace
-
-@implementation MultiRowModule {
-  NSLayoutConstraint* _contentViewWidthAnchor;
-}
-
-- (instancetype)initWithViews:(NSArray<UIView*>*)views
-                         type:(ContentSuggestionsModuleType)type {
-  self = [super initWithType:type];
-  if (self) {
-    UILabel* title = [[UILabel alloc] init];
-    title.text = [MagicStackModuleContainer titleStringForModule:type];
-    title.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote];
-    title.textColor = [UIColor colorNamed:kTextPrimaryColor];
-    title.accessibilityTraits |= UIAccessibilityTraitHeader;
-    title.accessibilityIdentifier =
-        [MagicStackModuleContainer titleStringForModule:type];
-
-    UIStackView* rowsStackView = [[UIStackView alloc] init];
-    rowsStackView.spacing = AlignValueToPixel(8.5);
-    rowsStackView.axis = UILayoutConstraintAxisVertical;
-    rowsStackView.translatesAutoresizingMaskIntoConstraints = NO;
-    rowsStackView.alignment = UIStackViewAlignmentLeading;
-    rowsStackView.distribution = UIStackViewDistributionFill;
-    NSUInteger index = 0;
-    for (UIView* view in views) {
-      [rowsStackView addArrangedSubview:view];
-      if (index < [views count] - 1) {
-        UIView* separator = [[UIView alloc] init];
-        separator.backgroundColor = [UIColor colorNamed:kSeparatorColor];
-        [rowsStackView addArrangedSubview:separator];
-        [NSLayoutConstraint activateConstraints:@[
-          [separator.heightAnchor
-              constraintEqualToConstant:AlignValueToPixel(kSeparatorHeight)],
-          [separator.widthAnchor
-              constraintEqualToConstant:[self contentViewWidth]],
-        ]];
-      }
-      index++;
-    }
-
-    _contentViewWidthAnchor = [rowsStackView.widthAnchor
-        constraintEqualToConstant:[self contentViewWidth]];
-    [NSLayoutConstraint activateConstraints:@[ _contentViewWidthAnchor ]];
-
-    UIStackView* containerStackView = [[UIStackView alloc] init];
-    containerStackView.spacing = kContentVerticalSpacing;
-    containerStackView.axis = UILayoutConstraintAxisVertical;
-    containerStackView.translatesAutoresizingMaskIntoConstraints = NO;
-    containerStackView.alignment = UIStackViewAlignmentLeading;
-    containerStackView.distribution = UIStackViewDistributionFill;
-    [containerStackView addArrangedSubview:title];
-    [containerStackView addArrangedSubview:rowsStackView];
-
-    [self addSubview:containerStackView];
-    NSDirectionalEdgeInsets contentInsets = NSDirectionalEdgeInsetsMake(
-        kContentTopInset, kContentHorizontalInset, kContentBottomInset, 0);
-    AddSameConstraintsWithInsets(containerStackView, self, contentInsets);
-  }
-  return self;
-}
-
-#pragma mark - UITraitEnvironment
-
-- (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
-  [super traitCollectionDidChange:previousTraitCollection];
-  if (previousTraitCollection.horizontalSizeClass !=
-      self.traitCollection.horizontalSizeClass) {
-    _contentViewWidthAnchor.constant = [self contentViewWidth];
-  }
-}
-
-#pragma mark - Helpers
-
-// Returns the expected width of the contentView subview.
-- (CGFloat)contentViewWidth {
-  // Give content the same width as the StackView, which is inset from this
-  // container view.
-  return [MagicStackModuleContainer
-             moduleWidthForHorizontalTraitCollection:self.traitCollection] -
-         kContentHorizontalInset;
-}
-
-@end
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h
index ea60bb9..38697b8 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h
@@ -18,6 +18,7 @@
   kSetUpListDefaultBrowser,
   kSetUpListAutofill,
   kCompactedSetUpList,
+  kSetUpListAllSet,
 };
 
 // Represents the content suggestions collection view.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_consumer.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_consumer.h
index 5b55a4e..43b2e824 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_consumer.h
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_consumer.h
@@ -7,6 +7,7 @@
 
 #import "base/ios/block_types.h"
 
+enum class ContentSuggestionsModuleType;
 @class ContentSuggestionsMostVisitedActionItem;
 @class ContentSuggestionsMostVisitedItem;
 @class ContentSuggestionsReturnToRecentTabItem;
@@ -53,8 +54,13 @@
 // `order`.
 - (void)setMagicStackOrder:(NSArray<NSNumber*>*)order;
 
-// Indicates to the consumer to display the SetUpList - a list of tasks that
-// a new user may want to complete.
+// Indicates to the consumer to scroll to the next module because `moduleType`
+// is completed.
+- (void)scrollToNextMagicStackModuleForCompletedModule:
+    (ContentSuggestionsModuleType)moduleType;
+
+// Indicates to the consumer to display the SetUpList - a list of
+// tasks that a new user may want to complete.
 - (void)showSetUpListWithItems:(NSArray<SetUpListItemViewData*>*)items;
 
 // Marks a Set Up List item complete with an animation and updated appearance.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
index 892174f..64256045 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
@@ -367,6 +367,9 @@
 
 - (void)didSelectSetUpListItem:(SetUpListItemType)type {
   [self.contentSuggestionsMetricsRecorder recordSetUpListItemSelected:type];
+  PrefService* localState = GetApplicationContext()->GetLocalState();
+  set_up_list_prefs::RecordInteraction(localState);
+
   switch (type) {
     case SetUpListItemType::kSignInSync:
       [self showSignIn];
@@ -378,6 +381,7 @@
       [self showCredentialProviderPromo];
       break;
     case SetUpListItemType::kFollow:
+    case SetUpListItemType::kAllSet:
       // TODO(crbug.com/1428070): Add a Follow item to the Set Up List.
       NOTREACHED();
   }
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h
index ca43d0b..88b5f69 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h
@@ -19,6 +19,9 @@
 // Feature for the Magic Stack.
 BASE_DECLARE_FEATURE(kMagicStack);
 
+// Feature that hides the Content Suggestions tiles.
+BASE_DECLARE_FEATURE(kHideContentSuggestionsTiles);
+
 // A parameter to indicate whether the Most Visited Tiles should be in the Magic
 // Stack.
 extern const char kMagicStackMostVisitedModuleParam[];
@@ -32,6 +35,10 @@
 // TODO(crbug.com/1385512): Remove this.
 extern const char kDiscoverFeedIsNativeUIEnabled[];
 
+// Parameters to choose which Content Suggestions tiles to hide.
+extern const char kHideContentSuggestionsTilesParamMostVisited[];
+extern const char kHideContentSuggestionsTilesParamShortcuts[];
+
 // Whether the Discover feed is enabled instead of the Zine feed.
 // TODO(crbug.com/1385512): Remove this.
 bool IsDiscoverFeedEnabled();
@@ -45,4 +52,10 @@
 // How much the NTP top margin should be reduced by for the Magic Stack design.
 double ReducedNTPTopMarginSpaceForMagicStack();
 
+// Whether the Most Visited Tiles should be hidden.
+bool ShouldHideMVT();
+
+// Whether the Shortcuts Tiles should be hidden.
+bool ShoudHideShortcuts();
+
 #endif  // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_FEATURE_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm
index a306d5b..e61ba0cb 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm
@@ -24,6 +24,10 @@
 // Feature disabled by default.
 BASE_FEATURE(kMagicStack, "MagicStack", base::FEATURE_DISABLED_BY_DEFAULT);
 
+BASE_FEATURE(kHideContentSuggestionsTiles,
+             "HideContentSuggestionsTiles",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 const char kMagicStackMostVisitedModuleParam[] = "MagicStackMostVisitedModule";
 
 const char kReducedSpaceParam[] = "ReducedNTPTopSpace";
@@ -32,6 +36,9 @@
 // feed.
 const char kDiscoverFeedIsNativeUIEnabled[] = "DiscoverFeedIsNativeUIEnabled";
 
+const char kHideContentSuggestionsTilesParamMostVisited[] = "HideMostVisited";
+const char kHideContentSuggestionsTilesParamShortcuts[] = "HideShortcuts";
+
 bool IsDiscoverFeedEnabled() {
   return base::FeatureList::IsEnabled(kDiscoverFeedInNtp);
 }
@@ -49,3 +56,15 @@
   return base::GetFieldTrialParamByFeatureAsDouble(kMagicStack,
                                                    kReducedSpaceParam, 0);
 }
+
+bool ShouldHideMVT() {
+  return base::GetFieldTrialParamByFeatureAsBool(
+      kHideContentSuggestionsTiles,
+      kHideContentSuggestionsTilesParamMostVisited, false);
+}
+
+bool ShoudHideShortcuts() {
+  return base::GetFieldTrialParamByFeatureAsBool(
+      kHideContentSuggestionsTiles, kHideContentSuggestionsTilesParamShortcuts,
+      false);
+}
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
index 40d2f78..b1c973a 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
@@ -298,7 +298,7 @@
     [self.consumer
         showReturnToRecentTabTileWithConfig:self.returnToRecentTabItem];
   }
-  if ([self.mostVisitedItems count] && ![self shouldHideMVTForTileAblation]) {
+  if ([self.mostVisitedItems count] && ![self shouldHideMVTTiles]) {
     [self.consumer setMostVisitedTilesWithConfigs:self.mostVisitedItems];
   }
   if ([self shouldShowSetUpList]) {
@@ -315,7 +315,7 @@
   // 1) Magic Stack is enabled (always show shortcuts in Magic Stack).
   // 2) The Set Up List and Magic Stack are not enabled (Set Up List replaced
   // Shortcuts).
-  if (![self shouldHideShortcutsForTileAblation] &&
+  if (![self shouldHideShortcuts] &&
       (IsMagicStackEnabled() || ![self shouldShowSetUpList])) {
     [self.consumer setShortcutTilesWithConfigs:self.actionButtonItems];
   }
@@ -425,8 +425,13 @@
   ProceduralBlock completion = ^{
     if ([weakSelf.setUpList allItemsComplete]) {
       [weakSelf.consumer showSetUpListDoneWithAnimations:^{
-        [self.feedDelegate contentSuggestionsWasUpdated];
+        if (!IsMagicStackEnabled()) {
+          [self.feedDelegate contentSuggestionsWasUpdated];
+        }
       }];
+    } else if (IsMagicStackEnabled()) {
+      [self.consumer scrollToNextMagicStackModuleForCompletedModule:
+                         SetUpListModuleTypeForSetUpListType(item.type)];
     }
   };
   [self.consumer markSetUpListItemComplete:item.type completion:completion];
@@ -568,7 +573,7 @@
 
 - (void)onMostVisitedURLsAvailable:
     (const ntp_tiles::NTPTilesVector&)mostVisited {
-  if ([self shouldHideMVTForTileAblation]) {
+  if ([self shouldHideMVTTiles]) {
     return;
   }
 
@@ -641,7 +646,7 @@
 
 // Replaces the Most Visited items currently displayed by the most recent ones.
 - (void)useFreshMostVisited {
-  if ([self shouldHideMVTForTileAblation]) {
+  if ([self shouldHideMVTTiles]) {
     return;
   }
   self.mostVisitedItems = self.freshMostVisitedItems;
@@ -772,30 +777,34 @@
   return NO;
 }
 
-// Returns whether the shortcut tiles should be hidden for the tile ablation
-// experiment.
-- (BOOL)shouldHideShortcutsForTileAblation {
+// Returns whether the shortcut tiles should be hidden.
+- (BOOL)shouldHideShortcuts {
+  if (ShoudHideShortcuts()) {
+    return YES;
+  }
   if ([self isTileAblationComplete]) {
     return NO;
   }
-  ntp_tiles::NewTabPageRetentionExperimentBehavior behavior =
-      ntp_tiles::GetNewTabPageRetentionExperimentType();
-  return behavior ==
-         ntp_tiles::NewTabPageRetentionExperimentBehavior::kTileAblationHideAll;
+  ntp_tiles::NewTabPageFieldTrialExperimentBehavior behavior =
+      ntp_tiles::GetNewTabPageFieldTrialExperimentType();
+  return behavior == ntp_tiles::NewTabPageFieldTrialExperimentBehavior::
+                         kTileAblationHideAll;
 }
 
-// Returns whether the MVT tiles should be hidden for the tile ablation
-// experiment.
-- (BOOL)shouldHideMVTForTileAblation {
+// Returns whether the MVT tiles should be hidden.
+- (BOOL)shouldHideMVTTiles {
+  if (ShouldHideMVT()) {
+    return YES;
+  }
   if ([self isTileAblationComplete]) {
     return NO;
   }
-  ntp_tiles::NewTabPageRetentionExperimentBehavior behavior =
-      ntp_tiles::GetNewTabPageRetentionExperimentType();
+  ntp_tiles::NewTabPageFieldTrialExperimentBehavior behavior =
+      ntp_tiles::GetNewTabPageFieldTrialExperimentType();
 
-  return behavior == ntp_tiles::NewTabPageRetentionExperimentBehavior::
+  return behavior == ntp_tiles::NewTabPageFieldTrialExperimentBehavior::
                          kTileAblationHideAll ||
-         behavior == ntp_tiles::NewTabPageRetentionExperimentBehavior::
+         behavior == ntp_tiles::NewTabPageFieldTrialExperimentBehavior::
                          kTileAblationHideMVTOnly;
 }
 
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
index dde5e5df..c9c599d 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
@@ -13,7 +13,6 @@
 #import "ios/chrome/browser/ntp/set_up_list_item_type.h"
 #import "ios/chrome/browser/shared/public/features/features.h"
 #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h"
-#import "ios/chrome/browser/ui/content_suggestions/cells/action_list_module.h"
 #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_cells_constants.h"
 #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_most_visited_action_item.h"
 #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_most_visited_item.h"
@@ -24,7 +23,7 @@
 #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_shortcut_tile_view.h"
 #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_tile_layout_util.h"
 #import "ios/chrome/browser/ui/content_suggestions/cells/magic_stack_module_container.h"
-#import "ios/chrome/browser/ui/content_suggestions/cells/multi_row_module.h"
+#import "ios/chrome/browser/ui/content_suggestions/cells/multi_row_container_view.h"
 #import "ios/chrome/browser/ui/content_suggestions/cells/query_suggestion_view.h"
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.h"
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h"
@@ -102,7 +101,8 @@
 // StackView holding all of `mostVisitedViews`.
 @property(nonatomic, strong) UIStackView* mostVisitedStackView;
 // Module Container for the `mostVisitedViews` when being shown in Magic Stack.
-@property(nonatomic, strong) ActionListModule* mostVisitedModuleContainer;
+@property(nonatomic, strong)
+    MagicStackModuleContainer* mostVisitedModuleContainer;
 // Width Anchor of the Most Visited Tiles container.
 @property(nonatomic, strong)
     NSLayoutConstraint* mostVisitedContainerWidthAnchor;
@@ -110,7 +110,8 @@
 @property(nonatomic, strong)
     NSMutableArray<ContentSuggestionsMostVisitedTileView*>* mostVisitedViews;
 // Module Container for the Shortcuts when being shown in Magic Stack.
-@property(nonatomic, strong) ActionListModule* shortcutsModuleContainer;
+@property(nonatomic, strong)
+    MagicStackModuleContainer* shortcutsModuleContainer;
 // StackView holding all of `shortcutsViews`.
 @property(nonatomic, strong) UIStackView* shortcutsStackView;
 // List of all of the Shortcut views.
@@ -410,6 +411,23 @@
   _magicStackModuleOrder = order;
 }
 
+- (void)scrollToNextMagicStackModuleForCompletedModule:
+    (ContentSuggestionsModuleType)moduleType {
+  ContentSuggestionsModuleType currentModule = [self currentlyShownModule];
+  // Do not scroll if the completed module is not the currently shown module.
+  if (currentModule != moduleType) {
+    return;
+  }
+  CGFloat nextPageContentOffsetX = [self
+      getNextPageOffsetForOffset:_magicStackScrollView.contentOffset.x
+                        velocity:kMagicStackMinimumPaginationScrollVelocity +
+                                 1];
+  [_magicStackScrollView
+      setContentOffset:CGPointMake(nextPageContentOffsetX,
+                                   _magicStackScrollView.contentOffset.y)
+              animated:YES];
+}
+
 - (void)showSetUpListWithItems:(NSArray<SetUpListItemViewData*>*)items {
   if (!self.viewLoaded) {
     _savedSetUpListItems = items;
@@ -440,36 +458,41 @@
           SetUpListModuleTypeForSetUpListType(data.type);
       if (shouldShowCompactedSetUpListModule) {
         [_compactedSetUpListViews addObject:view];
-      } else {
-        switch (type) {
-          case ContentSuggestionsModuleType::kSetUpListSync:
-            _setUpListSyncItemView = view;
-            break;
-          case ContentSuggestionsModuleType::kSetUpListDefaultBrowser:
-            _setUpListDefaultBrowserItemView = view;
-            break;
-          case ContentSuggestionsModuleType::kSetUpListAutofill:
-            _setUpListAutofillItemView = view;
-            break;
-          default:
-            break;
-        }
+      }
+      switch (type) {
+        case ContentSuggestionsModuleType::kSetUpListSync:
+          _setUpListSyncItemView = view;
+          break;
+        case ContentSuggestionsModuleType::kSetUpListDefaultBrowser:
+          _setUpListDefaultBrowserItemView = view;
+          break;
+        case ContentSuggestionsModuleType::kSetUpListAutofill:
+          _setUpListAutofillItemView = view;
+          break;
+        default:
+          break;
       }
       // Only add it to the Magic Stack here if it is after the inital
       // construction of the Magic Stack.
       if (_magicStack) {
         if (shouldShowCompactedSetUpListModule) {
-          MultiRowModule* setUpListCompactedModule = [[MultiRowModule alloc]
-              initWithViews:_compactedSetUpListViews
-                       type:ContentSuggestionsModuleType::kCompactedSetUpList];
+          MultiRowContainerView* multiRowContainer =
+              [[MultiRowContainerView alloc]
+                  initWithViews:_compactedSetUpListViews];
+          MagicStackModuleContainer* setUpListCompactedModule =
+              [[MagicStackModuleContainer alloc]
+                  initWithContentView:multiRowContainer
+                                 type:ContentSuggestionsModuleType::
+                                          kCompactedSetUpList];
           [_magicStack
               insertArrangedSubview:setUpListCompactedModule
                             atIndex:[self indexForMagicStackModule:
                                               ContentSuggestionsModuleType::
                                                   kCompactedSetUpList]];
         } else {
-          ActionListModule* setUpListModule =
-              [[ActionListModule alloc] initWithContentView:view type:type];
+          MagicStackModuleContainer* setUpListModule =
+              [[MagicStackModuleContainer alloc] initWithContentView:view
+                                                                type:type];
           [_magicStack
               insertArrangedSubview:setUpListModule
                             atIndex:[self indexForMagicStackModule:type]];
@@ -552,7 +575,18 @@
 
 - (void)showSetUpListDoneWithAnimations:(ProceduralBlock)animations {
   if (IsMagicStackEnabled()) {
-    // The MagicStack does not show the "All Set" view.
+    SetUpListItemViewData* allSetData =
+        [[SetUpListItemViewData alloc] initWithType:SetUpListItemType::kAllSet
+                                           complete:NO];
+    SetUpListItemView* view =
+        [[SetUpListItemView alloc] initWithData:allSetData];
+    MagicStackModuleContainer* allSetModule = [[MagicStackModuleContainer alloc]
+        initWithContentView:view
+                       type:ContentSuggestionsModuleType::kSetUpListAllSet];
+    // Determine which module to swap out.
+    [self replaceModuleAtIndex:
+              [self indexForMagicStackModule:[self currentlyShownModule]]
+                    withModule:allSetModule];
     return;
   }
   __weak __typeof(self) weakSelf = self;
@@ -684,16 +718,8 @@
 
 // This reads out the new page whenever the user scrolls in VoiceOver.
 - (NSString*)accessibilityScrollStatusForScrollView:(UIScrollView*)scrollView {
-  CGFloat moduleWidth = [MagicStackModuleContainer
-      moduleWidthForHorizontalTraitCollection:self.traitCollection];
-  NSUInteger moduleCount = [_magicStackModuleOrder count];
-
-  NSUInteger closestPage = roundf(scrollView.contentOffset.x / moduleWidth);
-  closestPage = fminf(closestPage, moduleCount);
-
-  ContentSuggestionsModuleType type = (ContentSuggestionsModuleType)
-      [_magicStackModuleOrder[closestPage] intValue];
-  return [MagicStackModuleContainer titleStringForModule:type];
+  return [MagicStackModuleContainer
+      titleStringForModule:[self currentlyShownModule]];
 }
 
 #pragma mark - Private
@@ -720,7 +746,7 @@
     insertionIndex++;
   }
   if (IsMagicStackEnabled()) {
-    self.mostVisitedModuleContainer = [[ActionListModule alloc]
+    self.mostVisitedModuleContainer = [[MagicStackModuleContainer alloc]
         initWithContentView:self.mostVisitedStackView
                        type:ContentSuggestionsModuleType::kMostVisited];
     if (ShouldPutMostVisitedSitesInMagicStack()) {
@@ -812,7 +838,8 @@
   _magicStack.axis = UILayoutConstraintAxisHorizontal;
   _magicStack.distribution = UIStackViewDistributionEqualSpacing;
   _magicStack.spacing = kMagicStackSpacing;
-  _magicStack.alignment = UIStackViewAlignmentCenter;
+  // Ensures modules take up entire height of the Magic Stack.
+  _magicStack.alignment = UIStackViewAlignmentFill;
   [_magicStackScrollView addSubview:_magicStack];
 
   // Add Magic Stack modules in order dictated by `_magicStackModuleOrder`.
@@ -821,7 +848,7 @@
         (ContentSuggestionsModuleType)[moduleType intValue];
     switch (type) {
       case ContentSuggestionsModuleType::kShortcuts: {
-        self.shortcutsModuleContainer = [[ActionListModule alloc]
+        self.shortcutsModuleContainer = [[MagicStackModuleContainer alloc]
             initWithContentView:self.shortcutsStackView
                            type:type];
         [_magicStack addArrangedSubview:self.shortcutsModuleContainer];
@@ -834,31 +861,38 @@
         break;
       }
       case ContentSuggestionsModuleType::kSetUpListSync: {
-        ActionListModule* setUpListSyncModule =
-            [[ActionListModule alloc] initWithContentView:_setUpListSyncItemView
-                                                     type:type];
+        MagicStackModuleContainer* setUpListSyncModule =
+            [[MagicStackModuleContainer alloc]
+                initWithContentView:_setUpListSyncItemView
+                               type:type];
         [_magicStack addArrangedSubview:setUpListSyncModule];
         break;
       }
       case ContentSuggestionsModuleType::kSetUpListDefaultBrowser: {
-        ActionListModule* setUpListDefaultBrowserModule =
-            [[ActionListModule alloc]
+        MagicStackModuleContainer* setUpListDefaultBrowserModule =
+            [[MagicStackModuleContainer alloc]
                 initWithContentView:_setUpListDefaultBrowserItemView
                                type:type];
         [_magicStack addArrangedSubview:setUpListDefaultBrowserModule];
         break;
       }
       case ContentSuggestionsModuleType::kSetUpListAutofill: {
-        ActionListModule* setUpListAutofillModule = [[ActionListModule alloc]
-            initWithContentView:_setUpListAutofillItemView
-                           type:type];
+        MagicStackModuleContainer* setUpListAutofillModule =
+            [[MagicStackModuleContainer alloc]
+                initWithContentView:_setUpListAutofillItemView
+                               type:type];
         [_magicStack addArrangedSubview:setUpListAutofillModule];
         break;
       }
       case ContentSuggestionsModuleType::kCompactedSetUpList: {
-        MultiRowModule* setUpListCompactedModule = [[MultiRowModule alloc]
-            initWithViews:_compactedSetUpListViews
-                     type:ContentSuggestionsModuleType::kCompactedSetUpList];
+        MultiRowContainerView* multiRowContainer =
+            [[MultiRowContainerView alloc]
+                initWithViews:_compactedSetUpListViews];
+        MagicStackModuleContainer* setUpListCompactedModule =
+            [[MagicStackModuleContainer alloc]
+                initWithContentView:multiRowContainer
+                               type:ContentSuggestionsModuleType::
+                                        kCompactedSetUpList];
         [_magicStack addArrangedSubview:setUpListCompactedModule];
         break;
       }
@@ -897,6 +931,50 @@
   NOTREACHED_NORETURN();
 }
 
+// Returns the `ContentSuggestionsModuleType` type of the module being currently
+// shown in the Magic Stack.
+- (ContentSuggestionsModuleType)currentlyShownModule {
+  CGFloat offset = _magicStackScrollView.contentOffset.x;
+  CGFloat moduleWidth = [MagicStackModuleContainer
+      moduleWidthForHorizontalTraitCollection:self.traitCollection];
+  NSUInteger moduleCount = [_magicStackModuleOrder count];
+  // Find closest page to the current scroll offset.
+  CGFloat closestPage = roundf(offset / moduleWidth);
+  closestPage = fminf(closestPage, moduleCount);
+  return (ContentSuggestionsModuleType)[_magicStackModuleOrder[(
+      NSUInteger)closestPage] intValue];
+}
+
+// Replaces the module at `index` with `newModule` in the Magic Stack.
+- (void)replaceModuleAtIndex:(NSUInteger)index
+                  withModule:(MagicStackModuleContainer*)newModule {
+  newModule.alpha = 0;
+  UIView* moduleToHide = [_magicStack arrangedSubviews][index];
+  __weak __typeof(self) weakSelf = self;
+  [UIView animateWithDuration:1.0
+      delay:0.0
+      options:UIViewAnimationOptionTransitionCurlDown
+      animations:^{
+        __typeof(self) strongSelf = weakSelf;
+        if (!strongSelf) {
+          return;
+        }
+        [strongSelf->_magicStack removeArrangedSubview:moduleToHide];
+        [strongSelf->_magicStack insertArrangedSubview:newModule atIndex:index];
+        moduleToHide.alpha = 0;
+        newModule.alpha = 1;
+      }
+      completion:^(BOOL finished) {
+        __typeof(self) strongSelf = weakSelf;
+        if (!strongSelf) {
+          return;
+        }
+        [moduleToHide removeFromSuperview];
+        [strongSelf->_magicStack setNeedsLayout];
+        [strongSelf->_magicStack layoutIfNeeded];
+      }];
+}
+
 // Determines the final page offset given the scroll `offset` and the `velocity`
 // scroll. If the drag is slow enough, then the closest page is the final state.
 // If the drag is in the negative direction, then go to the page previous to the
diff --git a/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_icon.mm b/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_icon.mm
index 5ed2735d..5f18fa9 100644
--- a/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_icon.mm
+++ b/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_icon.mm
@@ -199,6 +199,9 @@
     case SetUpListItemType::kAutofill:
       return IconInCircle(kEllipsisRectangleSymbol, _compactLayout,
                           kBlue600Color);
+    case SetUpListItemType::kAllSet:
+      return IconForSymbol(kCheckmarkSealFillSymbol, _compactLayout,
+                           kBlue500Color);
     case SetUpListItemType::kFollow:
       // TODO(crbug.com/1428070): Add a Follow item to the Set Up List.
       NOTREACHED();
diff --git a/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_view.mm b/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_view.mm
index 9bc105c..e7e1862 100644
--- a/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_view.mm
+++ b/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_view.mm
@@ -47,6 +47,7 @@
     @"kSetUpListItemDefaultBrowserID";
 constexpr NSString* const kSetUpListItemAutofillID =
     @"kSetUpListItemAutofillID";
+constexpr NSString* const kSetUpListItemAllSetID = @"kSetUpListItemAllSetID";
 constexpr NSString* const kSetUpListItemFollowID = @"kSetUpListItemFollowID";
 
 // Returns an NSAttributedString with strikethrough.
@@ -210,11 +211,13 @@
   [self addSubview:_contentStack];
   AddSameConstraints(_contentStack, self);
 
-  // Set up the tap gesture recognizer.
-  _tapGestureRecognizer =
-      [[UITapGestureRecognizer alloc] initWithTarget:self
-                                              action:@selector(handleTap:)];
-  [self addGestureRecognizer:_tapGestureRecognizer];
+  if (_type != SetUpListItemType::kAllSet) {
+    // Set up the tap gesture recognizer.
+    _tapGestureRecognizer =
+        [[UITapGestureRecognizer alloc] initWithTarget:self
+                                                action:@selector(handleTap:)];
+    [self addGestureRecognizer:_tapGestureRecognizer];
+  }
 }
 
 // Creates the title label.
@@ -259,6 +262,8 @@
       return l10n_util::GetNSString(IDS_IOS_SET_UP_LIST_DEFAULT_BROWSER_TITLE);
     case SetUpListItemType::kAutofill:
       return l10n_util::GetNSString(IDS_IOS_SET_UP_LIST_AUTOFILL_TITLE);
+    case SetUpListItemType::kAllSet:
+      return l10n_util::GetNSString(IDS_IOS_SET_UP_LIST_ALL_SET_TITLE);
     case SetUpListItemType::kFollow:
       // TODO(crbug.com/1428070): Add a Follow item to the Set Up List.
       NOTREACHED_NORETURN();
@@ -274,6 +279,8 @@
       return l10n_util::GetNSString(_config.default_browser_description);
     case SetUpListItemType::kAutofill:
       return l10n_util::GetNSString(_config.autofill_description);
+    case SetUpListItemType::kAllSet:
+      return l10n_util::GetNSString(IDS_IOS_SET_UP_LIST_ALL_SET_DESCRIPTION);
     case SetUpListItemType::kFollow:
       // TODO(crbug.com/1428070): Add a Follow item to the Set Up List.
       NOTREACHED_NORETURN();
@@ -288,6 +295,8 @@
       return kSetUpListItemDefaultBrowserID;
     case SetUpListItemType::kAutofill:
       return kSetUpListItemAutofillID;
+    case SetUpListItemType::kAllSet:
+      return kSetUpListItemAllSetID;
     case SetUpListItemType::kFollow:
       return kSetUpListItemFollowID;
   }
diff --git a/ios/chrome/browser/ui/content_suggestions/set_up_list/utils.mm b/ios/chrome/browser/ui/content_suggestions/set_up_list/utils.mm
index 83074af..cb1f9df 100644
--- a/ios/chrome/browser/ui/content_suggestions/set_up_list/utils.mm
+++ b/ios/chrome/browser/ui/content_suggestions/set_up_list/utils.mm
@@ -18,16 +18,23 @@
   if (set_up_list_prefs::IsSetUpListDisabled(local_state)) {
     return false;
   }
-  // check if we are within 14 days of FRE
+  // Check if we are within 14 days of FRE
   absl::optional<base::Time> first_run_time = GetFirstRunTime();
   if (!first_run_time) {
     // If this is the first time the app has been opened, First Run will not
     // have been completed yet. In this case, we will wait until the next run.
     return false;
   }
+  base::Time now = base::Time::Now();
   base::Time expiry_time = first_run_time.value() + base::Days(14);
-  if (base::Time::Now() > expiry_time) {
-    return false;
+  if (now > expiry_time) {
+    // It has been 14+ days since FRE, but if user has interacted in the last
+    // day the time will be extended.
+    base::Time last_interaction =
+        set_up_list_prefs::GetLastInteraction(local_state);
+    if (now > last_interaction + base::Days(1)) {
+      return false;
+    }
   }
 
   return true;
diff --git a/ios/chrome/browser/ui/ntp/BUILD.gn b/ios/chrome/browser/ui/ntp/BUILD.gn
index 8c3006a..75e0525 100644
--- a/ios/chrome/browser/ui/ntp/BUILD.gn
+++ b/ios/chrome/browser/ui/ntp/BUILD.gn
@@ -153,9 +153,9 @@
 source_set("field_trial") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
-    "new_tab_page_retention_field_trial.cc",
-    "new_tab_page_retention_field_trial.h",
-    "new_tab_page_retention_field_trial_constants.h",
+    "new_tab_page_field_trial.cc",
+    "new_tab_page_field_trial.h",
+    "new_tab_page_field_trial_constants.h",
     "synced_segments_field_trial.cc",
     "synced_segments_field_trial.h",
     "synced_segments_field_trial_constants.cc",
@@ -275,8 +275,8 @@
   testonly = true
   sources = [
     "new_tab_page_coordinator_unittest.mm",
+    "new_tab_page_field_trial_unittest.mm",
     "new_tab_page_mediator_unittest.mm",
-    "new_tab_page_retention_field_trial_unittest.mm",
   ]
   deps = [
     ":component_factory",
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.cc b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial.cc
similarity index 79%
rename from ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.cc
rename to ios/chrome/browser/ui/ntp/new_tab_page_field_trial.cc
index af8a056..c715ff0 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.cc
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h"
 
 #import "base/feature_list.h"
 #import "base/metrics/field_trial.h"
@@ -14,7 +14,7 @@
 #import "components/version_info/version_info.h"
 #import "ios/chrome/browser/first_run/first_run.h"
 #import "ios/chrome/browser/ui/first_run/ios_first_run_field_trials.h"
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_constants.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial_constants.h"
 #import "ios/chrome/common/channel_info.h"
 
 namespace {
@@ -24,14 +24,11 @@
 const int kPlaceholderTrialVersion = -1;
 
 // Store local state preference with whether the client has participated in
-// kNewTabPageRetention experiment or not.
-// Note: The name is misleading since it covers more than just popular sites.
-// This is because 2 configs were merged and it's best not to change an existing
-// pref name.
-const char kTrialPrefName[] = "popular_sites.trial_version";
+// kNewTabPageFieldTrial experiment or not.
+const char kTrialPrefName[] = "new_tab_page.trial_version";
 
 // The current trial version of
-// kNewTabPageRetention; should be updated when
+// kNewTabPageFieldTrial; should be updated when
 // the experiment is modified.
 const int kCurrentTrialVersion = 1;
 
@@ -75,7 +72,7 @@
 
 }  // namespace
 
-namespace new_tab_page_retention_field_trial {
+namespace new_tab_page_field_trial {
 
 // Creates the trial config, initializes the trial that puts clients into
 // different groups, and returns the version number of the current trial. There
@@ -87,59 +84,59 @@
     std::map<variations::VariationID, int> weight_by_id,
     const base::FieldTrial::EntropyProvider& low_entropy_provider,
     base::FeatureList* feature_list) {
-  FirstRunFieldTrialConfig config(ntp_tiles::kNewTabPageRetention.name);
+  FirstRunFieldTrialConfig config(ntp_tiles::kNewTabPageFieldTrial.name);
 
   // Tile ablation group that hides all tiles.
   config.AddGroup(
       base::StrCat({field_trial_constants::kTileAblationHideAllGroup,
                     field_trial_constants::
-                        kNewTabPageRetentionVersionSuffixTileAblation}),
+                        kNewTabPageFieldTrialVersionSuffixTileAblation}),
       field_trial_constants::kTileAblationHideAllID,
       weight_by_id[field_trial_constants::kTileAblationHideAllID]);
   base::FieldTrialParams tile_ablation_hide_all_params;
-  tile_ablation_hide_all_params[ntp_tiles::kNewTabPageRetentionParam] = "1";
+  tile_ablation_hide_all_params[ntp_tiles::kNewTabPageFieldTrialParam] = "1";
   base::AssociateFieldTrialParams(
-      ntp_tiles::kNewTabPageRetention.name,
+      ntp_tiles::kNewTabPageFieldTrial.name,
       base::StrCat({field_trial_constants::kTileAblationHideAllGroup,
                     field_trial_constants::
-                        kNewTabPageRetentionVersionSuffixTileAblation}),
+                        kNewTabPageFieldTrialVersionSuffixTileAblation}),
       tile_ablation_hide_all_params);
 
   // Tile ablation group that hides only MVT tiles.
   config.AddGroup(
       base::StrCat({field_trial_constants::kTileAblationHideOnlyMVTGroup,
                     field_trial_constants::
-                        kNewTabPageRetentionVersionSuffixTileAblation}),
+                        kNewTabPageFieldTrialVersionSuffixTileAblation}),
       field_trial_constants::kTileAblationHideOnlyMVTID,
       weight_by_id[field_trial_constants::kTileAblationHideOnlyMVTID]);
   base::FieldTrialParams tile_ablation_hide_mvt_params;
-  tile_ablation_hide_mvt_params[ntp_tiles::kNewTabPageRetentionParam] = "2";
+  tile_ablation_hide_mvt_params[ntp_tiles::kNewTabPageFieldTrialParam] = "2";
   base::AssociateFieldTrialParams(
-      ntp_tiles::kNewTabPageRetention.name,
+      ntp_tiles::kNewTabPageFieldTrial.name,
       base::StrCat({field_trial_constants::kTileAblationHideOnlyMVTGroup,
                     field_trial_constants::
-                        kNewTabPageRetentionVersionSuffixTileAblation}),
+                        kNewTabPageFieldTrialVersionSuffixTileAblation}),
       tile_ablation_hide_mvt_params);
 
   // Tile ablation control group.
   config.AddGroup(
       base::StrCat({field_trial_constants::kTileAblationControlGroup,
                     field_trial_constants::
-                        kNewTabPageRetentionVersionSuffixTileAblation}),
+                        kNewTabPageFieldTrialVersionSuffixTileAblation}),
       field_trial_constants::kTileAblationControlID,
       weight_by_id[field_trial_constants::kTileAblationControlID]);
   base::FieldTrialParams tile_ablation_control_params;
-  tile_ablation_control_params[ntp_tiles::kNewTabPageRetentionParam] = "3";
+  tile_ablation_control_params[ntp_tiles::kNewTabPageFieldTrialParam] = "3";
   base::AssociateFieldTrialParams(
-      ntp_tiles::kNewTabPageRetention.name,
+      ntp_tiles::kNewTabPageFieldTrial.name,
       base::StrCat({field_trial_constants::kTileAblationControlGroup,
                     field_trial_constants::
-                        kNewTabPageRetentionVersionSuffixTileAblation}),
+                        kNewTabPageFieldTrialVersionSuffixTileAblation}),
       tile_ablation_control_params);
 
   // Default group.
   scoped_refptr<base::FieldTrial> trial = config.CreateOneTimeRandomizedTrial(
-      field_trial_constants::kNewTabPageRetentionDefaultGroup,
+      field_trial_constants::kNewTabPageFieldTrialDefaultGroup,
       low_entropy_provider);
 
   //   Finalize the group choice and activates the trial - similar to a
@@ -151,14 +148,14 @@
   if (group_name ==
           base::StrCat({field_trial_constants::kTileAblationControlGroup,
                         field_trial_constants::
-                            kNewTabPageRetentionVersionSuffixTileAblation}) ||
-      group_name == field_trial_constants::kNewTabPageRetentionDefaultGroup) {
+                            kNewTabPageFieldTrialVersionSuffixTileAblation}) ||
+      group_name == field_trial_constants::kNewTabPageFieldTrialDefaultGroup) {
     feature_list->RegisterFieldTrialOverride(
-        ntp_tiles::kNewTabPageRetention.name,
+        ntp_tiles::kNewTabPageFieldTrial.name,
         base::FeatureList::OVERRIDE_DISABLE_FEATURE, trial.get());
   } else {
     feature_list->RegisterFieldTrialOverride(
-        ntp_tiles::kNewTabPageRetention.name,
+        ntp_tiles::kNewTabPageFieldTrial.name,
         base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial.get());
   }
 }
@@ -172,7 +169,8 @@
             PrefService* local_state) {
   // Don't create the trial if the feature is overridden to avoid having
   // multiple registered trials for the same feature.
-  if (feature_list->IsFeatureOverridden(ntp_tiles::kNewTabPageRetention.name)) {
+  if (feature_list->IsFeatureOverridden(
+          ntp_tiles::kNewTabPageFieldTrial.name)) {
     return;
   }
 
@@ -206,4 +204,4 @@
   CreateNewTabPageFieldTrial(weights_by_id, low_entropy_provider, feature_list);
 }
 
-}  // namespace new_tab_page_retention_field_trial
+}  // namespace new_tab_page_field_trial
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h
similarity index 77%
rename from ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h
rename to ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h
index 9070e30..a3f6c14 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_RETENTION_FIELD_TRIAL_H_
-#define IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_RETENTION_FIELD_TRIAL_H_
+#ifndef IOS_CHROME_BROWSER_UI_NTP_new_tab_page_field_trial_H_
+#define IOS_CHROME_BROWSER_UI_NTP_new_tab_page_field_trial_H_
 
 #import "base/metrics/field_trial.h"
 #import "components/variations/variations_associated_data.h"
@@ -11,7 +11,7 @@
 class PrefService;
 class PrefRegistrySimple;
 
-namespace new_tab_page_retention_field_trial {
+namespace new_tab_page_field_trial {
 
 // Creates a field trial to control the improved popular sites default
 // suggestions experiment so that it is shown on the NTP after first run.
@@ -31,6 +31,6 @@
     const base::FieldTrial::EntropyProvider& low_entropy_provider,
     base::FeatureList* feature_list);
 
-}  // namespace new_tab_page_retention_field_trial
+}  // namespace new_tab_page_field_trial
 
-#endif  // IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_RETENTION_FIELD_TRIAL_H_
+#endif  // IOS_CHROME_BROWSER_UI_NTP_new_tab_page_field_trial_H_
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_field_trial_constants.h b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial_constants.h
new file mode 100644
index 0000000..edc571c
--- /dev/null
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial_constants.h
@@ -0,0 +1,33 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_NTP_new_tab_page_field_trial_CONSTANTS_H_
+#define IOS_CHROME_BROWSER_UI_NTP_new_tab_page_field_trial_CONSTANTS_H_
+
+#import "components/variations/variations_associated_data.h"
+
+namespace field_trial_constants {
+
+// Version suffix for group names.
+const char kNewTabPageFieldTrialVersionSuffixTileAblation[] = "_M114";
+
+// Variation IDs for the tile ablation experiment.
+const variations::VariationID kTileAblationHideAllID = 3365413;
+const variations::VariationID kTileAblationHideOnlyMVTID = 3365414;
+const variations::VariationID kTileAblationControlID = 3365415;
+
+// Group names for the tile ablation experiment.
+const char kTileAblationHideAllGroup[] = "TileAblation_HideAll";
+const char kTileAblationHideOnlyMVTGroup[] = "TileAblation_HideOnlyMVT";
+const char kTileAblationControlGroup[] = "TileAblation_Control";
+
+const char kNewTabPageFieldTrialDefaultGroup[] = "Default";
+
+// Group weights for the tile ablation experiments.
+const int kTileAblationStableWeight = 5;
+const int kTileAblationPrestableWeight = 16;
+
+}  // namespace field_trial_constants
+
+#endif  // IOS_CHROME_BROWSER_UI_NTP_new_tab_page_field_trial_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_unittest.mm b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial_unittest.mm
similarity index 64%
rename from ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_unittest.mm
rename to ios/chrome/browser/ui/ntp/new_tab_page_field_trial_unittest.mm
index a207154..d5b4b21 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_unittest.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_field_trial_unittest.mm
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial.h"
 
 #import "base/feature_list.h"
 #import "base/metrics/field_trial.h"
@@ -11,15 +11,15 @@
 #import "base/test/scoped_feature_list.h"
 #import "components/ntp_tiles/features.h"
 #import "components/variations/variations_associated_data.h"
-#import "ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_constants.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_field_trial_constants.h"
 #import "testing/platform_test.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
-// Tests for field trial creation for the new tab page retention experiments.
-class NewTabPageRetentionFieldTrialTest : public PlatformTest {
+// Tests for field trial creation for the new tab page field trial experiments.
+class NewTabPageFieldTrialTest : public PlatformTest {
  protected:
   void TearDown() override {
     scoped_feature_list_.Reset();
@@ -31,12 +31,12 @@
 };
 
 // Tests default field trial group.
-TEST_F(NewTabPageRetentionFieldTrialTest, TestDefault) {
+TEST_F(NewTabPageFieldTrialTest, TestDefault) {
   auto feature_list = std::make_unique<base::FeatureList>();
 
   std::map<variations::VariationID, int> weight_by_id = {};
 
-  new_tab_page_retention_field_trial::CreateNewTabPageFieldTrialForTesting(
+  new_tab_page_field_trial::CreateNewTabPageFieldTrialForTesting(
       std::move(weight_by_id), low_entropy_provider_, feature_list.get());
 
   // Substitute the existing feature list with the one with field trial
@@ -44,24 +44,24 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
 
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(
-      ntp_tiles::kNewTabPageRetention.name));
-  EXPECT_FALSE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageRetention));
+      ntp_tiles::kNewTabPageFieldTrial.name));
+  EXPECT_FALSE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageFieldTrial));
 
-  ntp_tiles::NewTabPageRetentionExperimentBehavior experiment_type =
-      ntp_tiles::GetNewTabPageRetentionExperimentType();
+  ntp_tiles::NewTabPageFieldTrialExperimentBehavior experiment_type =
+      ntp_tiles::GetNewTabPageFieldTrialExperimentType();
 
   EXPECT_EQ(experiment_type,
-            ntp_tiles::NewTabPageRetentionExperimentBehavior::kDefault);
+            ntp_tiles::NewTabPageFieldTrialExperimentBehavior::kDefault);
 }
 
 // Tests that the tile ablation control group uses default behavior.
-TEST_F(NewTabPageRetentionFieldTrialTest, TestTileAblationControl) {
+TEST_F(NewTabPageFieldTrialTest, TestTileAblationControl) {
   auto feature_list = std::make_unique<base::FeatureList>();
 
   std::map<variations::VariationID, int> weight_by_id = {
       {field_trial_constants::kTileAblationControlID, 100}};
 
-  new_tab_page_retention_field_trial::CreateNewTabPageFieldTrialForTesting(
+  new_tab_page_field_trial::CreateNewTabPageFieldTrialForTesting(
       std::move(weight_by_id), low_entropy_provider_, feature_list.get());
 
   // Substitute the existing feature list with the one with field trial
@@ -69,61 +69,61 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
 
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(
-      ntp_tiles::kNewTabPageRetention.name));
-  EXPECT_FALSE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageRetention));
+      ntp_tiles::kNewTabPageFieldTrial.name));
+  EXPECT_FALSE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageFieldTrial));
 
-  ntp_tiles::NewTabPageRetentionExperimentBehavior experiment_type =
-      ntp_tiles::GetNewTabPageRetentionExperimentType();
+  ntp_tiles::NewTabPageFieldTrialExperimentBehavior experiment_type =
+      ntp_tiles::GetNewTabPageFieldTrialExperimentType();
 
   EXPECT_EQ(experiment_type,
-            ntp_tiles::NewTabPageRetentionExperimentBehavior::kDefault);
+            ntp_tiles::NewTabPageFieldTrialExperimentBehavior::kDefault);
 }
 
 // Tests the tile ablation hiding all tiles apps group.
-TEST_F(NewTabPageRetentionFieldTrialTest, TestTileAblationHideAllGroup) {
+TEST_F(NewTabPageFieldTrialTest, TestTileAblationHideAllGroup) {
   auto feature_list = std::make_unique<base::FeatureList>();
 
   std::map<variations::VariationID, int> weight_by_id = {
       {field_trial_constants::kTileAblationHideAllID, 100}};
 
-  new_tab_page_retention_field_trial::CreateNewTabPageFieldTrialForTesting(
+  new_tab_page_field_trial::CreateNewTabPageFieldTrialForTesting(
       std::move(weight_by_id), low_entropy_provider_, feature_list.get());
 
   // Substitute the existing feature list with the one with field trial
   // configurations we are testing, and check assertions.
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(
-      ntp_tiles::kNewTabPageRetention.name));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageRetention));
+      ntp_tiles::kNewTabPageFieldTrial.name));
+  EXPECT_TRUE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageFieldTrial));
 
-  ntp_tiles::NewTabPageRetentionExperimentBehavior experiment_type =
-      ntp_tiles::GetNewTabPageRetentionExperimentType();
+  ntp_tiles::NewTabPageFieldTrialExperimentBehavior experiment_type =
+      ntp_tiles::GetNewTabPageFieldTrialExperimentType();
 
   EXPECT_EQ(
       experiment_type,
-      ntp_tiles::NewTabPageRetentionExperimentBehavior::kTileAblationHideAll);
+      ntp_tiles::NewTabPageFieldTrialExperimentBehavior::kTileAblationHideAll);
 }
 
 // Tests the tile ablation hiding only MVTs group.
-TEST_F(NewTabPageRetentionFieldTrialTest, TestTileAblationHideOnlyMVTGroup) {
+TEST_F(NewTabPageFieldTrialTest, TestTileAblationHideOnlyMVTGroup) {
   auto feature_list = std::make_unique<base::FeatureList>();
 
   std::map<variations::VariationID, int> weight_by_id = {
       {field_trial_constants::kTileAblationHideOnlyMVTID, 100}};
 
-  new_tab_page_retention_field_trial::CreateNewTabPageFieldTrialForTesting(
+  new_tab_page_field_trial::CreateNewTabPageFieldTrialForTesting(
       std::move(weight_by_id), low_entropy_provider_, feature_list.get());
 
   // Substitute the existing feature list with the one with field trial
   // configurations we are testing, and check assertions.
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(
-      ntp_tiles::kNewTabPageRetention.name));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageRetention));
+      ntp_tiles::kNewTabPageFieldTrial.name));
+  EXPECT_TRUE(base::FeatureList::IsEnabled(ntp_tiles::kNewTabPageFieldTrial));
 
-  ntp_tiles::NewTabPageRetentionExperimentBehavior experiment_type =
-      ntp_tiles::GetNewTabPageRetentionExperimentType();
+  ntp_tiles::NewTabPageFieldTrialExperimentBehavior experiment_type =
+      ntp_tiles::GetNewTabPageFieldTrialExperimentType();
 
-  EXPECT_EQ(experiment_type, ntp_tiles::NewTabPageRetentionExperimentBehavior::
+  EXPECT_EQ(experiment_type, ntp_tiles::NewTabPageFieldTrialExperimentBehavior::
                                  kTileAblationHideMVTOnly);
 }
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_constants.h b/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_constants.h
deleted file mode 100644
index ae621dc56d..0000000
--- a/ios/chrome/browser/ui/ntp/new_tab_page_retention_field_trial_constants.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_RETENTION_FIELD_TRIAL_CONSTANTS_H_
-#define IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_RETENTION_FIELD_TRIAL_CONSTANTS_H_
-
-#import "components/variations/variations_associated_data.h"
-
-namespace field_trial_constants {
-
-// Version suffix for group names.
-const char kNewTabPageRetentionVersionSuffixImprovedTiles[] = "_20230308";
-const char kNewTabPageRetentionVersionSuffixTileAblation[] = "_20230504";
-
-// Variation IDs for the tile ablation experiment.
-const variations::VariationID kTileAblationHideAllID = 3361865;
-const variations::VariationID kTileAblationHideOnlyMVTID = 3361866;
-const variations::VariationID kTileAblationControlID = 3361867;
-
-// Group names for the tile ablation experiment.
-const char kTileAblationHideAllGroup[] = "TileAblation.HideAll";
-const char kTileAblationHideOnlyMVTGroup[] = "TileAblation_HideOnlyMVT";
-const char kTileAblationControlGroup[] = "TileAblation_Control";
-
-const char kNewTabPageRetentionDefaultGroup[] = "Default";
-
-// Group weights for the tile ablation experiments.
-const int kTileAblationStableWeight = 5;
-const int kTileAblationPrestableWeight = 16;
-
-}  // namespace field_trial_constants
-
-#endif  // IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_RETENTION_FIELD_TRIAL_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/popup_menu/DEPS b/ios/chrome/browser/ui/popup_menu/DEPS
index 09730b8c..070d96d 100644
--- a/ios/chrome/browser/ui/popup_menu/DEPS
+++ b/ios/chrome/browser/ui/popup_menu/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   "+ios/chrome/browser/ui/browser_container",
+  "+ios/chrome/browser/ui/bookmarks",
   "+ios/chrome/browser/ui/bubble",
   "+ios/chrome/browser/ui/lens/lens_entrypoint.h",
   "+ios/chrome/browser/ui/ntp/metrics/feed_metrics_recorder.h",
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
index f45cde7..50e5e2fa 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
@@ -63,6 +63,7 @@
     "//ios/chrome/browser/tabs:features",
     "//ios/chrome/browser/translate",
     "//ios/chrome/browser/ui/bookmarks:core",
+    "//ios/chrome/browser/ui/bookmarks:utils",
     "//ios/chrome/browser/ui/browser_container:ui",
     "//ios/chrome/browser/ui/follow",
     "//ios/chrome/browser/ui/ntp/metrics",
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.h b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.h
index 442d052..f5e0784 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.h
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.h
@@ -75,8 +75,10 @@
 // BaseViewController for presenting some UI.
 @property(nonatomic, weak) UIViewController* baseViewController;
 
-// The bookmarks model to know if the page is bookmarked.
-@property(nonatomic, assign) bookmarks::BookmarkModel* bookmarkModel;
+// Bookmarks models to know if the page is bookmarked.
+@property(nonatomic, assign)
+    bookmarks::BookmarkModel* localOrSyncableBookmarkModel;
+@property(nonatomic, assign) bookmarks::BookmarkModel* accountBookmarkModel;
 
 // Pref service to retrieve browser state preference values.
 @property(nonatomic, assign) PrefService* browserStatePrefs;
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
index c11934c..90fdf91 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
@@ -61,6 +61,7 @@
 #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h"
 #import "ios/chrome/browser/tabs/features.h"
 #import "ios/chrome/browser/translate/chrome_ios_translate_client.h"
+#import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
 #import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_recorder.h"
 #import "ios/chrome/browser/ui/popup_menu//overflow_menu/overflow_menu_orderer.h"
 #import "ios/chrome/browser/ui/popup_menu/overflow_menu/destination_usage_history/constants.h"
@@ -165,7 +166,8 @@
   std::unique_ptr<OverlayPresenterObserver> _overlayPresenterObserver;
 
   // Bridge to register for bookmark changes.
-  std::unique_ptr<BookmarkModelBridge> _bookmarkModelBridge;
+  std::unique_ptr<BookmarkModelBridge> _localOrSyncableBookmarkModelBridge;
+  std::unique_ptr<BookmarkModelBridge> _accountBookmarkModelBridge;
 
   // Bridge to get notified of the language detection event.
   std::unique_ptr<language::IOSLanguageDetectionTabHelperObserverBridge>
@@ -289,7 +291,8 @@
   self.webState = nullptr;
   self.webStateList = nullptr;
 
-  self.bookmarkModel = nullptr;
+  self.localOrSyncableBookmarkModel = nullptr;
+  self.accountBookmarkModel = nullptr;
   self.browserStatePrefs = nullptr;
   self.localStatePrefs = nullptr;
 
@@ -363,14 +366,29 @@
   }
 }
 
-- (void)setBookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel {
-  _bookmarkModelBridge.reset();
+- (void)setLocalOrSyncableBookmarkModel:
+    (bookmarks::BookmarkModel*)localOrSyncableBookmarkModel {
+  _localOrSyncableBookmarkModelBridge.reset();
 
-  _bookmarkModel = bookmarkModel;
+  _localOrSyncableBookmarkModel = localOrSyncableBookmarkModel;
 
-  if (bookmarkModel) {
-    _bookmarkModelBridge =
-        std::make_unique<BookmarkModelBridge>(self, bookmarkModel);
+  if (localOrSyncableBookmarkModel) {
+    _localOrSyncableBookmarkModelBridge = std::make_unique<BookmarkModelBridge>(
+        self, localOrSyncableBookmarkModel);
+  }
+
+  [self updateModel];
+}
+
+- (void)setAccountBookmarkModel:
+    (bookmarks::BookmarkModel*)accountBookmarkModel {
+  _accountBookmarkModelBridge.reset();
+
+  _accountBookmarkModel = accountBookmarkModel;
+
+  if (accountBookmarkModel) {
+    _accountBookmarkModelBridge =
+        std::make_unique<BookmarkModelBridge>(self, accountBookmarkModel);
   }
 
   [self updateModel];
@@ -936,8 +954,10 @@
   self.appActionsGroup.actions = appActions;
 
   BOOL pageIsBookmarked =
-      self.webState && self.bookmarkModel &&
-      self.bookmarkModel->IsBookmarked(self.webState->GetVisibleURL());
+      self.webState && self.localOrSyncableBookmarkModel &&
+      bookmark_utils_ios::IsBookmarked(self.webState->GetVisibleURL(),
+                                       self.localOrSyncableBookmarkModel,
+                                       self.accountBookmarkModel);
 
   NSMutableArray<OverflowMenuAction*>* pageActions =
       [[NSMutableArray alloc] init];
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
index 11ecd87..c111bdf 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
@@ -27,6 +27,7 @@
 #import "components/translate/core/browser/translate_pref_names.h"
 #import "components/translate/core/browser/translate_prefs.h"
 #import "components/translate/core/language_detection/language_detection_model.h"
+#import "ios/chrome/browser/bookmarks/account_bookmark_model_factory.h"
 #import "ios/chrome/browser/bookmarks/local_or_syncable_bookmark_model_factory.h"
 #import "ios/chrome/browser/overlays/public/overlay_presenter.h"
 #import "ios/chrome/browser/overlays/public/overlay_request.h"
@@ -227,12 +228,22 @@
   }
 
   void SetUpBookmarks() {
-    bookmark_model_ =
+    local_or_syncable_bookmark_model_ =
         ios::LocalOrSyncableBookmarkModelFactory::GetForBrowserState(
             browser_state_.get());
-    DCHECK(bookmark_model_);
-    bookmarks::test::WaitForBookmarkModelToLoad(bookmark_model_);
-    mediator_.bookmarkModel = bookmark_model_;
+    DCHECK(local_or_syncable_bookmark_model_);
+    account_bookmark_model_ =
+        ios::AccountBookmarkModelFactory::GetForBrowserState(
+            browser_state_.get());
+
+    // TODO(crbug.com/1448010): Use two-model `WaitForBookmarkModelToLoad`.
+    bookmarks::test::WaitForBookmarkModelToLoad(
+        local_or_syncable_bookmark_model_);
+    if (account_bookmark_model_) {
+      bookmarks::test::WaitForBookmarkModelToLoad(account_bookmark_model_);
+    }
+    mediator_.localOrSyncableBookmarkModel = local_or_syncable_bookmark_model_;
+    mediator_.accountBookmarkModel = account_bookmark_model_;
   }
 
   void InsertNewWebState(int index) {
@@ -330,7 +341,8 @@
 
   FakeOverlayPresentationContext presentation_context_;
   OverflowMenuMediator* mediator_;
-  BookmarkModel* bookmark_model_;
+  BookmarkModel* local_or_syncable_bookmark_model_;
+  BookmarkModel* account_bookmark_model_;
   std::unique_ptr<TestingPrefServiceSimple> browserStatePrefs_;
   std::unique_ptr<TestingPrefServiceSimple> localStatePrefs_;
   web::FakeWebState* web_state_;
@@ -553,7 +565,9 @@
   CreateMediator(/*is_incognito=*/NO);
   CreateBrowserStatePrefs();
   SetUpBookmarks();
-  bookmarks::AddIfNotBookmarked(bookmark_model_, bookmarkedURL,
+  // TODO(crbug.com/1448014): Revise this test to ensure account model support.
+  bookmarks::AddIfNotBookmarked(local_or_syncable_bookmark_model_,
+                                bookmarkedURL,
                                 base::SysNSStringToUTF16(@"Test bookmark"));
   mediator_.webStateList = browser_->GetWebStateList();
   mediator_.browserStatePrefs = browserStatePrefs_.get();
@@ -571,7 +585,7 @@
   EXPECT_FALSE(HasItem(kToolsMenuAddToBookmarks, /*enabled=*/YES));
   EXPECT_TRUE(HasItem(kToolsMenuEditBookmark, /*enabled=*/YES));
 
-  bookmark_model_->RemoveAllUserBookmarks();
+  local_or_syncable_bookmark_model_->RemoveAllUserBookmarks();
   EXPECT_TRUE(HasItem(kToolsMenuAddToBookmarks, /*enabled=*/YES));
   EXPECT_FALSE(HasItem(kToolsMenuEditBookmark, /*enabled=*/YES));
 }
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm
index bc94f764..c7f0bc7 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.mm
@@ -13,6 +13,7 @@
 #import "base/metrics/user_metrics_action.h"
 #import "components/feature_engagement/public/event_constants.h"
 #import "components/feature_engagement/public/tracker.h"
+#import "ios/chrome/browser/bookmarks/account_bookmark_model_factory.h"
 #import "ios/chrome/browser/bookmarks/local_or_syncable_bookmark_model_factory.h"
 #import "ios/chrome/browser/feature_engagement/tracker_factory.h"
 #import "ios/chrome/browser/follow/follow_action_state.h"
@@ -248,9 +249,12 @@
       self.overflowMenuMediator.navigationAgent =
           WebNavigationBrowserAgent::FromBrowser(self.browser);
       self.overflowMenuMediator.baseViewController = self.baseViewController;
-      self.overflowMenuMediator.bookmarkModel =
+      self.overflowMenuMediator.localOrSyncableBookmarkModel =
           ios::LocalOrSyncableBookmarkModelFactory::GetForBrowserState(
               self.browser->GetBrowserState());
+      self.overflowMenuMediator.accountBookmarkModel =
+          ios::AccountBookmarkModelFactory::GetForBrowserState(
+              self.browser->GetBrowserState());
       self.overflowMenuMediator.browserStatePrefs =
           self.browser->GetBrowserState()->GetPrefs();
       self.overflowMenuMediator.localStatePrefs =
diff --git a/ios/chrome/browser/ui/settings/password/BUILD.gn b/ios/chrome/browser/ui/settings/password/BUILD.gn
index 0ca0ea1..be7e825 100644
--- a/ios/chrome/browser/ui/settings/password/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/password/BUILD.gn
@@ -290,7 +290,6 @@
     "//components/strings",
     "//components/sync/service",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser/credential_provider_promo:features",
     "//ios/chrome/browser/metrics:eg_test_support+eg2",
     "//ios/chrome/browser/policy:eg_test_support+eg2",
     "//ios/chrome/browser/shared/ui/util",
@@ -301,7 +300,6 @@
     "//ios/chrome/browser/ui/settings/password/password_details:password_details_table_view_constants",
     "//ios/chrome/browser/ui/settings/password/password_settings:password_settings_constants",
     "//ios/chrome/browser/ui/settings/password/passwords_in_other_apps:eg_test_support+eg2",
-    "//ios/chrome/common/ui/confirmation_alert:constants",
     "//ios/chrome/common/ui/reauthentication",
     "//ios/chrome/common/ui/table_view:cells_constants",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
index a43fc1b..65be746 100644
--- a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
+++ b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
@@ -19,7 +19,6 @@
 #import "components/sync/base/features.h"
 #import "components/sync/base/sync_prefs.h"
 #import "components/sync/base/user_selectable_type.h"
-#import "ios/chrome/browser/credential_provider_promo/features.h"
 #import "ios/chrome/browser/metrics/metrics_app_interface.h"
 #import "ios/chrome/browser/policy/policy_earl_grey_utils.h"
 #import "ios/chrome/browser/signin/fake_system_identity.h"
@@ -31,10 +30,8 @@
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_app_interface.h"
 #import "ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h"
 #import "ios/chrome/browser/ui/settings/settings_root_table_constants.h"
-#import "ios/chrome/common/ui/confirmation_alert/constants.h"
 #import "ios/chrome/common/ui/reauthentication/reauthentication_protocol.h"
 #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h"
-#import "ios/chrome/grit/ios_google_chrome_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_actions.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
@@ -261,12 +258,8 @@
 // Matcher for the Delete button in Confirmation Alert for batch passwords
 // deletion when password grouping is enabled.
 id<GREYMatcher> BatchDeleteConfirmationButtonForGrouping() {
-  return grey_allOf(
-      grey_accessibilityID([NSString
-          stringWithFormat:@"%@%@",
-                           l10n_util::GetNSString(IDS_IOS_DELETE_ACTION_TITLE),
-                           @"AlertAction"]),
-      grey_interactable(), nullptr);
+  return chrome_test_util::AlertAction(
+      l10n_util::GetNSString(IDS_IOS_DELETE_ACTION_TITLE));
 }
 
 // Matcher for the Delete button in the list view, located at the bottom of the
@@ -434,75 +427,6 @@
   return SettingToolbarEditDoneButton();
 }
 
-// Returns the matcher for the Credential Provider Promo's subtitle.
-id<GREYMatcher> SubtitleMatcher() {
-  return grey_accessibilityID(
-      kConfirmationAlertSubtitleAccessibilityIdentifier);
-}
-
-// Returns the matcher for the Credential Provider Promo's primary action
-// button.
-id<GREYMatcher> PrimaryActionButtonMatcher() {
-  return grey_accessibilityID(
-      kConfirmationAlertPrimaryActionAccessibilityIdentifier);
-}
-
-// Returns the matcher for the Credential Provider Promo's secondary action
-// button.
-id<GREYMatcher> SecondaryActionButtonMatcher() {
-  return grey_accessibilityID(
-      kConfirmationAlertSecondaryActionAccessibilityIdentifier);
-}
-
-// Returns the matcher for the Credential Provider Promo's tertiary action
-// button.
-id<GREYMatcher> TertiaryActionButtonMatcher() {
-  return grey_accessibilityID(
-      kConfirmationAlertTertiaryActionAccessibilityIdentifier);
-}
-
-// Checks that the Credential Provider Promo subtitle text and buttons are
-// interactable.
-void CheckThatCredentialPromoElementsAreInteractable() {
-  [[EarlGrey selectElementWithMatcher:SubtitleMatcher()]
-      assertWithMatcher:grey_interactable()];
-  [[EarlGrey selectElementWithMatcher:PrimaryActionButtonMatcher()]
-      assertWithMatcher:grey_interactable()];
-  [[EarlGrey selectElementWithMatcher:SecondaryActionButtonMatcher()]
-      assertWithMatcher:grey_interactable()];
-  [[EarlGrey selectElementWithMatcher:TertiaryActionButtonMatcher()]
-      assertWithMatcher:grey_interactable()];
-}
-
-// Checks that the Credential Provider Promo appears and dismisses it.
-void CheckForAndDismissCredentialProviderPromo() {
-  // Check that the inital promo is visible.
-  id<GREYMatcher> initialTitleLabelMatcher = grey_text(
-      l10n_util::GetNSString(IDS_IOS_CREDENTIAL_PROVIDER_PROMO_INITIAL_TITLE));
-  [[EarlGrey selectElementWithMatcher:initialTitleLabelMatcher]
-      assertWithMatcher:grey_sufficientlyVisible()];
-  CheckThatCredentialPromoElementsAreInteractable();
-
-  // Tap the primary action button to display the `learn more` promo.
-  [[EarlGrey
-      selectElementWithMatcher:grey_allOf(PrimaryActionButtonMatcher(),
-                                          grey_sufficientlyVisible(), nil)]
-      performAction:grey_tap()];
-
-  // Check that the `learn more` promo is visible.
-  id<GREYMatcher> learnMoreTitleLabelMatcher = grey_text(l10n_util::GetNSString(
-      IDS_IOS_CREDENTIAL_PROVIDER_PROMO_LEARN_MORE_TITLE));
-  [[EarlGrey selectElementWithMatcher:learnMoreTitleLabelMatcher]
-      assertWithMatcher:grey_sufficientlyVisible()];
-  CheckThatCredentialPromoElementsAreInteractable();
-
-  // Tap the secondary action button to dismiss the promo.
-  [[EarlGrey
-      selectElementWithMatcher:grey_allOf(SecondaryActionButtonMatcher(),
-                                          grey_sufficientlyVisible(), nil)]
-      performAction:grey_tap()];
-}
-
 }  // namespace
 
 // Various tests for the main Password Manager UI.
@@ -656,16 +580,6 @@
         password_manager::features::kIOSPasswordCheckup);
   }
 
-  if ([self isRunningTest:@selector(testCopyPasswordMenuItem)] ||
-      [self isRunningTest:@selector(testCopyPasswordToast)]) {
-    config.additional_args.push_back(
-        std::string("--enable-features=CredentialProviderExtensionPromo:enable_"
-                    "promo_on_password_copied/true"));
-    // Without relaunch, the credential provider promo meets its impression
-    // limit and does not display in subsequent runs.
-    config.relaunch_policy = ForceRelaunchByCleanShutdown;
-  }
-
   return config;
 }
 
@@ -726,9 +640,6 @@
   [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)]
       performAction:grey_tap()];
 
-  // Dismiss the credential provider extension promo.
-  CheckForAndDismissCredentialProviderPromo();
-
   // Check the snackbar in case of failed reauthentication.
   [PasswordSettingsAppInterface mockReauthenticationModuleExpectedResult:
                                     ReauthenticationResult::kFailure];
@@ -1378,9 +1289,6 @@
   [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)]
       performAction:grey_tap()];
 
-  // Dismiss the credential provider extension promo.
-  CheckForAndDismissCredentialProviderPromo();
-
   [[EarlGrey selectElementWithMatcher:SettingsMenuBackButton()]
       performAction:grey_tap()];
   [[EarlGrey selectElementWithMatcher:SettingsMenuBackButton()]
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn b/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
index 394eab68..08d7f5c 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
@@ -65,6 +65,7 @@
     "//ios/chrome/browser/tabs_search",
     "//ios/chrome/browser/tabs_search:tabs_search_factory",
     "//ios/chrome/browser/ui/bookmarks",
+    "//ios/chrome/browser/ui/bookmarks:utils",
     "//ios/chrome/browser/ui/bookmarks/editor",
     "//ios/chrome/browser/ui/bring_android_tabs",
     "//ios/chrome/browser/ui/commerce:price_card",
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/BUILD.gn b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/BUILD.gn
index 2bddb3f..5157009 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/BUILD.gn
@@ -23,6 +23,7 @@
     "//ios/chrome/browser/shared/model/browser_state",
     "//ios/chrome/browser/tabs",
     "//ios/chrome/browser/tabs:features",
+    "//ios/chrome/browser/ui/bookmarks:utils",
     "//ios/chrome/browser/ui/menu",
     "//ios/chrome/browser/ui/menu:tab_context_menu_delegate",
     "//ios/chrome/browser/ui/tab_switcher:tab_utils",
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm
index 475d13b..78cb3ecf 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm
@@ -8,6 +8,7 @@
 #import "components/bookmarks/browser/bookmark_model.h"
 #import "components/bookmarks/common/bookmark_pref_names.h"
 #import "components/prefs/pref_service.h"
+#import "ios/chrome/browser/bookmarks/account_bookmark_model_factory.h"
 #import "ios/chrome/browser/bookmarks/local_or_syncable_bookmark_model_factory.h"
 #import "ios/chrome/browser/ntp/new_tab_page_util.h"
 #import "ios/chrome/browser/shared/model/browser/browser.h"
@@ -16,6 +17,7 @@
 #import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/tabs/features.h"
 #import "ios/chrome/browser/tabs/tab_title_util.h"
+#import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
 #import "ios/chrome/browser/ui/menu/action_factory.h"
 #import "ios/chrome/browser/ui/menu/tab_context_menu_delegate.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_cell.h"
@@ -193,11 +195,14 @@
 
 // Returns `YES` if the tab `item` is already bookmarked.
 - (BOOL)isTabItemBookmarked:(TabItem*)item {
-  bookmarks::BookmarkModel* bookmarkModel =
+  bookmarks::BookmarkModel* localOrSyncableBookmarkModel =
       ios::LocalOrSyncableBookmarkModelFactory::GetForBrowserState(
           _browserState);
-  return item && bookmarkModel &&
-         bookmarkModel->GetMostRecentlyAddedUserNodeForURL(item.URL);
+  bookmarks::BookmarkModel* accountBookmarkModel =
+      ios::AccountBookmarkModelFactory::GetForBrowserState(_browserState);
+  return item &&
+         bookmark_utils_ios::IsBookmarked(
+             item.URL, localOrSyncableBookmarkModel, accountBookmarkModel);
 }
 
 // Returns `YES` if the tab for the given `identifier` is pinned.
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
index 2a47aaf..341bc487 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
@@ -14,6 +14,7 @@
 #import "components/bookmarks/browser/bookmark_model.h"
 #import "components/search_engines/template_url_service.h"
 #import "components/strings/grit/components_strings.h"
+#import "ios/chrome/browser/bookmarks/account_bookmark_model_factory.h"
 #import "ios/chrome/browser/bookmarks/local_or_syncable_bookmark_model_factory.h"
 #import "ios/chrome/browser/bring_android_tabs/bring_android_tabs_to_ios_service.h"
 #import "ios/chrome/browser/bring_android_tabs/bring_android_tabs_to_ios_service_factory.h"
@@ -52,6 +53,7 @@
 #import "ios/chrome/browser/synced_sessions/synced_sessions_util.h"
 #import "ios/chrome/browser/tabs/features.h"
 #import "ios/chrome/browser/tabs/inactive_tabs/features.h"
+#import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
 #import "ios/chrome/browser/ui/bookmarks/bookmarks_coordinator.h"
 #import "ios/chrome/browser/ui/bring_android_tabs/bring_android_tabs_prompt_coordinator.h"
 #import "ios/chrome/browser/ui/bring_android_tabs/tab_list_from_android_coordinator.h"
@@ -1321,13 +1323,14 @@
 }
 
 - (void)bookmarkURL:(const GURL&)URL title:(NSString*)title {
-  bookmarks::BookmarkModel* bookmarkModel =
+  bookmarks::BookmarkModel* localOrSyncableBookmarkModel =
       ios::LocalOrSyncableBookmarkModelFactory::GetForBrowserState(
           self.regularBrowser->GetBrowserState());
-  bool currentlyBookmarked =
-      bookmarkModel && bookmarkModel->GetMostRecentlyAddedUserNodeForURL(URL);
-
-  if (currentlyBookmarked) {
+  bookmarks::BookmarkModel* accountBookmarkModel =
+      ios::AccountBookmarkModelFactory::GetForBrowserState(
+          self.regularBrowser->GetBrowserState());
+  if (bookmark_utils_ios::IsBookmarked(URL, localOrSyncableBookmarkModel,
+                                       accountBookmarkModel)) {
     [self editBookmarkWithURL:URL];
   } else {
     base::RecordAction(base::UserMetricsAction(
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.h b/ios/chrome/test/earl_grey/chrome_matchers.h
index fb18f32056..1ad356c1d 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers.h
+++ b/ios/chrome/test/earl_grey/chrome_matchers.h
@@ -581,6 +581,9 @@
 // Returns a matcher for safety check table view.
 id<GREYMatcher> SafetyCheckTableViewMatcher();
 
+// Returns a matcher for action in an AlertCoordinator.
+id<GREYMatcher> AlertAction(NSString* title);
+
 #pragma mark - Promo style view controller
 
 // Returns matcher for the primary action button.
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.mm b/ios/chrome/test/earl_grey/chrome_matchers.mm
index 440caaa..a65dcbeb 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers.mm
+++ b/ios/chrome/test/earl_grey/chrome_matchers.mm
@@ -721,6 +721,12 @@
   return [ChromeMatchersAppInterface safetyCheckTableViewMatcher];
 }
 
+id<GREYMatcher> AlertAction(NSString* title) {
+  return grey_allOf(
+      grey_accessibilityID([title stringByAppendingString:@"AlertAction"]),
+      grey_interactable(), nil);
+}
+
 #pragma mark - Overflow Menu Destinations
 
 id<GREYMatcher> BookmarksDestinationButton() {
diff --git a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1
index f21904f..2175acae 100644
--- a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1
+++ b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@
-b27e8e03606273d0119a638c2d67e0cba2300475
\ No newline at end of file
+94dcce9630b62058a4f0d6395931264adab533c2
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1
index 8a99d25..fc4683c 100644
--- a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1
+++ b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@
-e48042baa084d84b8e9840dd69dffedec6441bd1
\ No newline at end of file
+da49d5abf1169045367ab8769fd69d1771944445
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
index 6c75670..9a99b3cb 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-38cb7cadea86b7b98b05ad8e47a6ecd5ebede04a
\ No newline at end of file
+8124d6432cfce3b9a7fbe8dabe9d74ac19bd39b2
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
index 150459d..c8d0ffe 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-3b23c9d1d1e937b61344d86f0ae0a39a71c8267c
\ No newline at end of file
+ca4b84c8cfc9eae626b869dacd4947ee5cbe86d3
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
index a2c54232..ffb6f14 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-4577ae90643aec98f83e53097c04c450e39223fb
\ No newline at end of file
+0043de7ef8767ac65f9f6f486130b82413dd64a5
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
index 5c1ac6f7..36fd489 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-71d01f62bd03eca8ce15b7996303e2e96dbb6c35
\ No newline at end of file
+0ddac668e0d258847a83aa611928d05d1beac469
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1
index 0b89670..bf88844b5 100644
--- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-5bd46d3c5be87ef68d192ab3aac9c05a92e9242f
\ No newline at end of file
+752ecd0fa2f6b91fd0a5b92cc52acab0e0b0266f
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1
index bad13e7..0c70a4b 100644
--- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-5fcd68ddd657e51db52036cabeb4439cb2affff1
\ No newline at end of file
+2c6309d578d6d504654a6d4d341a6374cf8b3878
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
index 08b5a62e..882bcf4c 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-0a538e7f0aa55706df3202e62bdf95b67b9ddd01
\ No newline at end of file
+259736712c02131a7c1d651cca2bf6394515c9c9
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
index 9ec75d4..0a73c9e 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-abd23a831d7ccf3a47ce9b288ac60dec2724f261
\ No newline at end of file
+81b0c8ba5a660273ac0743a2507fa5c0ae81b51e
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
index 45b2db2..f8955c3c 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-8ed96511f0b1e6e302d86d2793529fce211b57ab
\ No newline at end of file
+b75b845ef3b324bb6374ac7668499b242424f801
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
index 0fd6e06..764d961 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-2dc3e754bee806b1a584eae4629903d75d4c9460
\ No newline at end of file
+1bdf3507bc9c5f1a9dc5695a3a814c6763a0d2d0
\ No newline at end of file
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index 2c6482f..6000ffc 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -315,17 +315,6 @@
              "FFmpegDecodeOpaqueVP8",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
-// Enable an updated dialog UI for the getDisplayMedia picker dialog under the
-// preferCurrentTab constraint.
-BASE_FEATURE(kShareThisTabDialog,
-             "ShareThisTabDialog",
-             base::FEATURE_DISABLED_BY_DEFAULT);
-
-// The length of the initial delay during which the "Allow"-button is disabled
-// in the share-this-tab dialog.
-const base::FeatureParam<int> kShareThisTabDialogActivationDelayMs{
-    &kShareThisTabDialog, "activation_delay_ms", 500};
-
 // Only used for disabling overlay fullscreen (aka SurfaceView) in Clank.
 BASE_FEATURE(kOverlayFullscreenVideo,
              "overlay-fullscreen-video",
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index 0820fea..ecf3c6d 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -257,9 +257,6 @@
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseMultiPlaneFormatForSoftwareVideo);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kMultiPlaneSoftwareVideoSharedImages);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kMultiPlaneVideoCaptureSharedImages);
-MEDIA_EXPORT BASE_DECLARE_FEATURE(kShareThisTabDialog);
-MEDIA_EXPORT extern const base::FeatureParam<int>
-    kShareThisTabDialogActivationDelayMs;
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kOpenscreenCastStreamingSession);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kOpenscreenVideoBitrateFactorInFrameDrops);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kOverlayFullscreenVideo);
diff --git a/media/video/av1_video_encoder.cc b/media/video/av1_video_encoder.cc
index e9130ff..f3a1b56f 100644
--- a/media/video/av1_video_encoder.cc
+++ b/media/video/av1_video_encoder.cc
@@ -107,6 +107,7 @@
   svc_params = {};
   svc_params.framerate_factor[0] = 1;
   svc_params.number_spatial_layers = 1;
+  svc_params.number_temporal_layers = 1;
   if (opts.scalability_mode.has_value()) {
     switch (opts.scalability_mode.value()) {
       case SVCScalabilityMode::kL1T1:
diff --git a/media/video/software_video_encoder_test.cc b/media/video/software_video_encoder_test.cc
index 7dff62bc..b0c3573 100644
--- a/media/video/software_video_encoder_test.cc
+++ b/media/video/software_video_encoder_test.cc
@@ -695,6 +695,63 @@
   }
 }
 
+TEST_P(SVCVideoEncoderTest, ChangeLayers) {
+  VideoEncoder::Options options;
+  options.frame_size = gfx::Size(640, 480);
+  options.bitrate = Bitrate::ConstantBitrate(1000000u);  // 1Mbps
+  options.framerate = 25;
+  options.scalability_mode = GetParam().scalability_mode;
+  std::vector<scoped_refptr<VideoFrame>> frames_to_encode;
+
+  std::vector<VideoEncoderOutput> chunks;
+  size_t total_frames_count = 80;
+
+  // Encoder all frames with 3 temporal layers and put all outputs in |chunks|
+  auto frame_duration = base::Seconds(1.0 / options.framerate.value());
+
+  VideoEncoder::OutputCB encoder_output_cb = base::BindLambdaForTesting(
+      [&](VideoEncoderOutput output,
+          absl::optional<VideoEncoder::CodecDescription> desc) {
+        chunks.push_back(std::move(output));
+      });
+
+  encoder_->Initialize(profile_, options, /*info_cb=*/base::DoNothing(),
+                       std::move(encoder_output_cb),
+                       ValidatingStatusCB(/* quit_run_loop_on_call */ true));
+  RunUntilQuit();
+
+  uint32_t color = 0x964050;
+  for (auto frame_index = 0u; frame_index < total_frames_count; frame_index++) {
+    auto timestamp = frame_index * frame_duration;
+
+    const bool reconfigure = (frame_index == total_frames_count / 2);
+    if (reconfigure) {
+      encoder_->Flush(ValidatingStatusCB(/* quit_run_loop_on_call */ true));
+      RunUntilQuit();
+
+      // Ask encoder to change SVC mode, empty output callback
+      // means the encoder should keep the old one.
+      options.scalability_mode = SVCScalabilityMode::kL1T1;
+      encoder_->ChangeOptions(
+          options, VideoEncoder::OutputCB(),
+          ValidatingStatusCB(/* quit_run_loop_on_call */ true));
+      RunUntilQuit();
+    }
+
+    auto frame =
+        CreateFrame(options.frame_size, pixel_format_, timestamp, color);
+    color = (color << 1) + frame_index;
+    frames_to_encode.push_back(frame);
+    encoder_->Encode(frame, VideoEncoder::EncodeOptions(false),
+                     ValidatingStatusCB(/* quit_run_loop_on_call */ true));
+    RunUntilQuit();
+  }
+
+  encoder_->Flush(ValidatingStatusCB(/* quit_run_loop_on_call */ true));
+  RunUntilQuit();
+  EXPECT_EQ(chunks.size(), total_frames_count);
+}
+
 TEST_P(H264VideoEncoderTest, ReconfigureWithResize) {
   VideoEncoder::Options options;
   gfx::Size size1(320, 200), size2(400, 240);
diff --git a/mojo/public/cpp/bindings/direct_receiver.cc b/mojo/public/cpp/bindings/direct_receiver.cc
index 50a4392c..84f2c3a 100644
--- a/mojo/public/cpp/bindings/direct_receiver.cc
+++ b/mojo/public/cpp/bindings/direct_receiver.cc
@@ -24,7 +24,7 @@
 
 ThreadLocalNode::ThreadLocalNode(base::PassKey<ThreadLocalNode>)
     : task_runner_(base::SingleThreadTaskRunner::GetCurrentDefault()) {
-  CHECK(core::IsMojoIpczEnabled());
+  CHECK(IsDirectReceiverSupported());
   CHECK(!g_thread_local_node);
   g_thread_local_node = this;
 
@@ -212,3 +212,11 @@
 }
 
 }  // namespace mojo::internal
+
+namespace mojo {
+
+bool IsDirectReceiverSupported() {
+  return core::IsMojoIpczEnabled();
+}
+
+}  // namespace mojo
diff --git a/mojo/public/cpp/bindings/direct_receiver.h b/mojo/public/cpp/bindings/direct_receiver.h
index da4444a..466c3562 100644
--- a/mojo/public/cpp/bindings/direct_receiver.h
+++ b/mojo/public/cpp/bindings/direct_receiver.h
@@ -27,6 +27,10 @@
 class WidgetInputHandlerImpl;
 }
 
+namespace cc::mojo_embedder {
+class AsyncLayerTreeFrameSink;
+}
+
 namespace mojo {
 
 namespace internal {
@@ -99,6 +103,7 @@
 
   // Update this list and get a mojo/OWNERS approval in order to gain access to
   // DirectReceiver construction.
+  friend class cc::mojo_embedder::AsyncLayerTreeFrameSink;
   friend class mojo::test::direct_receiver_unittest::ServiceImpl;
   friend class blink::WidgetInputHandlerImpl;
 };
@@ -155,6 +160,9 @@
   Receiver<T> receiver_;
 };
 
+// Indicates whether DirectReceiver can be supported in the calling process.
+COMPONENT_EXPORT(MOJO_CPP_BINDINGS) bool IsDirectReceiverSupported();
+
 }  // namespace mojo
 
 #endif  // MOJO_PUBLIC_CPP_BINDINGS_DIRECT_RECEIVER_H_
diff --git a/mojo/public/tools/bindings/generators/mojom_mojolpm_generator.py b/mojo/public/tools/bindings/generators/mojom_mojolpm_generator.py
index d0b7b25..3689bb9 100644
--- a/mojo/public/tools/bindings/generators/mojom_mojolpm_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_mojolpm_generator.py
@@ -24,6 +24,17 @@
     mojom.INT64: "int64",
     mojom.UINT64: "uint64",
     mojom.DOUBLE: "double",
+    mojom.NULLABLE_BOOL: "bool",
+    mojom.NULLABLE_INT8: "int32",
+    mojom.NULLABLE_UINT8: "uint32",
+    mojom.NULLABLE_INT16: "int32",
+    mojom.NULLABLE_UINT16: "uint32",
+    mojom.NULLABLE_INT32: "int32",
+    mojom.NULLABLE_UINT32: "uint32",
+    mojom.NULLABLE_FLOAT: "float",
+    mojom.NULLABLE_INT64: "int64",
+    mojom.NULLABLE_UINT64: "uint64",
+    mojom.NULLABLE_DOUBLE: "double",
 }
 
 _kind_to_cpp_proto_type = {
@@ -38,6 +49,17 @@
     mojom.INT64: "::google::protobuf::int64",
     mojom.UINT64: "::google::protobuf::int64",
     mojom.DOUBLE: "double",
+    mojom.NULLABLE_BOOL: "bool",
+    mojom.NULLABLE_INT8: "::google::protobuf::int32",
+    mojom.NULLABLE_UINT8: "::google::protobuf::uint32",
+    mojom.NULLABLE_INT16: "::google::protobuf::int32",
+    mojom.NULLABLE_UINT16: "::google::protobuf::uint32",
+    mojom.NULLABLE_INT32: "::google::protobuf::int32",
+    mojom.NULLABLE_UINT32: "::google::protobuf::uint32",
+    mojom.NULLABLE_FLOAT: "float",
+    mojom.NULLABLE_INT64: "::google::protobuf::int64",
+    mojom.NULLABLE_UINT64: "::google::protobuf::int64",
+    mojom.NULLABLE_DOUBLE: "double",
 }
 
 
diff --git a/net/base/features.cc b/net/base/features.cc
index c1f7597..34c12754 100644
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -82,6 +82,11 @@
              "EncryptedClientHelloQuic",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
+// TODO(crbug.com/795089): Enable this feature.
+BASE_FEATURE(kRSAKeyUsageForLocalAnchors,
+             "RSAKeyUsageForLocalAnchors",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 BASE_FEATURE(kNetworkQualityEstimator,
              "NetworkQualityEstimator",
              base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/net/base/features.h b/net/base/features.h
index e29fc8e4..75e6be5 100644
--- a/net/base/features.h
+++ b/net/base/features.h
@@ -105,6 +105,14 @@
 // implemented. This flag is just a temporary mechanism for now.
 NET_EXPORT BASE_DECLARE_FEATURE(kEncryptedClientHelloQuic);
 
+// Enables checking the X.509 keyUsage extension in TLS 1.2 for RSA server
+// certificates that chain to a local trust anchor.
+//
+// Independent of the setting of this feature, keyUsage is always checked at TLS
+// 1.3, for ECDSA certificates, and for all certificates that chain to a known
+// root.
+NET_EXPORT BASE_DECLARE_FEATURE(kRSAKeyUsageForLocalAnchors);
+
 // Enables optimizing the network quality estimation algorithms in network
 // quality estimator (NQE).
 NET_EXPORT BASE_DECLARE_FEATURE(kNetworkQualityEstimator);
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc
index b78a35151..e732a5c 100644
--- a/net/socket/ssl_client_socket_impl.cc
+++ b/net/socket/ssl_client_socket_impl.cc
@@ -1249,10 +1249,15 @@
   }
 
   // Enforce keyUsage extension for RSA leaf certificates chaining up to known
-  // roots.
-  // TODO(crbug.com/795089): Enforce this unconditionally.
+  // roots unconditionally. Enforcement for local anchors is, for now,
+  // conditional on feature flags and external configuration. See
+  // https://crbug.com/795089.
+  bool rsa_key_usage_for_local_anchors =
+      context_->config().rsa_key_usage_for_local_anchors_override.value_or(
+          base::FeatureList::IsEnabled(features::kRSAKeyUsageForLocalAnchors));
   SSL_set_enforce_rsa_key_usage(
-      ssl_.get(), server_cert_verify_result_.is_issued_by_known_root);
+      ssl_.get(), rsa_key_usage_for_local_anchors ||
+                      server_cert_verify_result_.is_issued_by_known_root);
 
   // If the connection was good, check HPKP and CT status simultaneously,
   // but prefer to treat the HPKP error as more serious, if there was one.
diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
index d8d487c6..ea6431d3 100644
--- a/net/socket/ssl_client_socket_unittest.cc
+++ b/net/socket/ssl_client_socket_unittest.cc
@@ -3847,37 +3847,50 @@
 struct KeyUsageTest {
   EmbeddedTestServer::ServerCertificate server_cert;
   uint16_t cipher_suite;
-  bool known_root;
-  bool success;
+  bool match;
 };
 
 class SSLClientSocketKeyUsageTest
     : public SSLClientSocketTest,
-      public ::testing::WithParamInterface<struct KeyUsageTest> {};
+      public ::testing::WithParamInterface<
+          std::tuple<KeyUsageTest,
+                     bool /*known_root*/,
+                     bool /*rsa_key_usage_for_local_anchors_enabled*/,
+                     bool /*override_feature*/>> {};
 
-const struct KeyUsageTest kKeyUsageTests[] = {
-    // Known Root: Success iff keyUsage allows the key exchange method
-    {EmbeddedTestServer::CERT_KEY_USAGE_RSA_ENCIPHERMENT, kSigningCipher, true,
-     false},
+const KeyUsageTest kKeyUsageTests[] = {
+    // keyUsage matches cipher suite.
     {EmbeddedTestServer::CERT_KEY_USAGE_RSA_DIGITAL_SIGNATURE, kSigningCipher,
-     true, true},
-    {EmbeddedTestServer::CERT_KEY_USAGE_RSA_ENCIPHERMENT, kEncryptingCipher,
-     true, true},
-    {EmbeddedTestServer::CERT_KEY_USAGE_RSA_DIGITAL_SIGNATURE,
-     kEncryptingCipher, true, false},
-    // Unknown Root: Always succeeds
-    {EmbeddedTestServer::CERT_KEY_USAGE_RSA_ENCIPHERMENT, kSigningCipher, false,
      true},
-    {EmbeddedTestServer::CERT_KEY_USAGE_RSA_DIGITAL_SIGNATURE, kSigningCipher,
-     false, true},
     {EmbeddedTestServer::CERT_KEY_USAGE_RSA_ENCIPHERMENT, kEncryptingCipher,
-     false, true},
+     true},
+    // keyUsage does not match cipher suite.
+    {EmbeddedTestServer::CERT_KEY_USAGE_RSA_ENCIPHERMENT, kSigningCipher,
+     false},
     {EmbeddedTestServer::CERT_KEY_USAGE_RSA_DIGITAL_SIGNATURE,
-     kEncryptingCipher, false, true},
+     kEncryptingCipher, false},
 };
 
-TEST_P(SSLClientSocketKeyUsageTest, RSAKeyUsageEnforcedForKnownRoot) {
-  const KeyUsageTest test = GetParam();
+TEST_P(SSLClientSocketKeyUsageTest, RSAKeyUsage) {
+  const auto& [test, known_root, rsa_key_usage_for_local_anchors_enabled,
+               override_feature] = GetParam();
+  bool enable_feature;
+  if (override_feature) {
+    // Configure the feature in the opposite way that we intend, to test that
+    // the configuration overrides it.
+    enable_feature = !rsa_key_usage_for_local_anchors_enabled;
+  } else {
+    enable_feature = rsa_key_usage_for_local_anchors_enabled;
+  }
+  base::test::ScopedFeatureList scoped_feature_list;
+  if (enable_feature) {
+    scoped_feature_list.InitAndEnableFeature(
+        features::kRSAKeyUsageForLocalAnchors);
+  } else {
+    scoped_feature_list.InitAndDisableFeature(
+        features::kRSAKeyUsageForLocalAnchors);
+  }
+
   SSLServerConfig server_config;
   server_config.version_max = SSL_PROTOCOL_VERSION_TLS1_2;
   server_config.cipher_suite_for_testing = test.cipher_suite;
@@ -3885,9 +3898,16 @@
   scoped_refptr<X509Certificate> server_cert =
       embedded_test_server()->GetCertificate();
 
+  SSLContextConfig context_config;
+  if (override_feature) {
+    context_config.rsa_key_usage_for_local_anchors_override =
+        rsa_key_usage_for_local_anchors_enabled;
+  }
+  ssl_config_service_->UpdateSSLConfigAndNotify(context_config);
+
   // Certificate is trusted.
   CertVerifyResult verify_result;
-  verify_result.is_issued_by_known_root = test.known_root;
+  verify_result.is_issued_by_known_root = known_root;
   verify_result.verified_cert = server_cert;
   verify_result.public_key_hashes =
       MakeHashValueVector(kGoodHashValueVectorInput);
@@ -3899,7 +3919,7 @@
   SSLInfo ssl_info;
   ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info));
 
-  if (test.success) {
+  if (test.match || (!known_root && !rsa_key_usage_for_local_anchors_enabled)) {
     EXPECT_THAT(rv, IsOk());
     EXPECT_TRUE(sock_->IsConnected());
   } else {
@@ -3908,9 +3928,10 @@
   }
 }
 
-INSTANTIATE_TEST_SUITE_P(RSAKeyUsageInstantiation,
-                         SSLClientSocketKeyUsageTest,
-                         ValuesIn(kKeyUsageTests));
+INSTANTIATE_TEST_SUITE_P(
+    RSAKeyUsageInstantiation,
+    SSLClientSocketKeyUsageTest,
+    Combine(ValuesIn(kKeyUsageTests), Bool(), Bool(), Bool()));
 
 // Test that when CT is required (in this case, by the delegate), the
 // absence of CT information is a socket error.
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 8e66627..2054e97 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -61,7 +61,6 @@
 #include "net/spdy/spdy_stream.h"
 #include "net/ssl/ssl_cipher_suite_names.h"
 #include "net/ssl/ssl_connection_status_flags.h"
-#include "net/third_party/quiche/src/quiche/quic/core/http/spdy_server_push_utils.h"
 #include "net/third_party/quiche/src/quiche/spdy/core/spdy_frame_builder.h"
 #include "net/third_party/quiche/src/quiche/spdy/core/spdy_protocol.h"
 #include "url/scheme_host_port.h"
@@ -97,11 +96,6 @@
 const int kDefaultConnectionAtRiskOfLossSeconds = 10;
 const int kHungIntervalSeconds = 10;
 
-// Lifetime of unclaimed pushed stream, in seconds: after this period, a pushed
-// stream is cancelled if still not claimed.
-// TODO(https://crbug.com/1426477): Remove.
-const int kPushedStreamLifetimeSeconds = 300;
-
 // Default initial value for HTTP/2 SETTINGS.
 const uint32_t kDefaultInitialHeaderTableSize = 4096;
 const uint32_t kDefaultInitialEnablePush = 1;
@@ -227,17 +221,6 @@
   }
 }
 
-// This method always returns false.  TODO(https://crbug.com/1426477): Remove.
-bool IsPushEnabled(const spdy::SettingsMap& initial_settings) {
-  const auto it = initial_settings.find(spdy::SETTINGS_ENABLE_PUSH);
-
-  // Push is enabled by default.
-  if (it == initial_settings.end())
-    return true;
-
-  return it->second == 1;
-}
-
 void LogSpdyAcceptChForOriginHistogram(bool value) {
   base::UmaHistogramBoolean("Net.SpdySession.AcceptChForOrigin", value);
 }
@@ -929,7 +912,7 @@
     bool http2_end_stream_with_data_frame,
     bool enable_priority_update,
     TimeFunc time_func,
-    ServerPushDelegate* push_delegate,
+    ServerPushDelegate* /*push_delegate*/,
     NetworkQualityEstimator* network_quality_estimator,
     NetLog* net_log)
     : spdy_session_key_(spdy_session_key),
@@ -937,7 +920,6 @@
       transport_security_state_(transport_security_state),
       ssl_config_service_(ssl_config_service),
       stream_hi_water_mark_(kFirstStreamId),
-      push_delegate_(push_delegate),
       initial_settings_(initial_settings),
       enable_http2_settings_grease_(enable_http2_settings_grease),
       greased_http2_frame_(greased_http2_frame),
@@ -965,7 +947,6 @@
           enable_ping_based_connection_checking),
       is_http2_enabled_(is_http2_enabled),
       is_quic_enabled_(is_quic_enabled),
-      enable_push_(IsPushEnabled(initial_settings)),
       connection_at_risk_of_loss_time_(
           base::Seconds(kDefaultConnectionAtRiskOfLossSeconds)),
       hung_interval_(base::Seconds(kHungIntervalSeconds)),
@@ -1987,204 +1968,9 @@
   // wasting bandwidth.
   const RequestPriority request_priority = IDLE;
 
-  if (!enable_push_) {
-    RecordSpdyPushedStreamFateHistogram(SpdyPushedStreamFate::kPushDisabled);
-    EnqueueResetStreamFrame(stream_id, request_priority,
-                            spdy::ERROR_CODE_REFUSED_STREAM,
-                            "Push is disabled.");
-    return;
-  }
-
-  if ((stream_id & 0x1) != 0) {
-    std::string description = base::StringPrintf(
-        "Received invalid pushed stream id %d (must be even) on stream id %d.",
-        stream_id, associated_stream_id);
-    LOG(WARNING) << description;
-    RecordSpdyPushedStreamFateHistogram(
-        SpdyPushedStreamFate::kPromisedStreamIdParityError);
-    CloseSessionOnError(ERR_HTTP2_PROTOCOL_ERROR, description);
-    return;
-  }
-
-  if ((associated_stream_id & 0x1) != 1) {
-    std::string description = base::StringPrintf(
-        "Received pushed stream id %d on invalid stream id %d (must be odd).",
-        stream_id, associated_stream_id);
-    LOG(WARNING) << description;
-    RecordSpdyPushedStreamFateHistogram(
-        SpdyPushedStreamFate::kAssociatedStreamIdParityError);
-    CloseSessionOnError(ERR_HTTP2_PROTOCOL_ERROR, description);
-    return;
-  }
-
-  if (stream_id <= last_accepted_push_stream_id_) {
-    std::string description = base::StringPrintf(
-        "Received pushed stream id %d must be larger than last accepted id %d.",
-        stream_id, last_accepted_push_stream_id_);
-    LOG(WARNING) << description;
-    RecordSpdyPushedStreamFateHistogram(
-        SpdyPushedStreamFate::kStreamIdOutOfOrder);
-    CloseSessionOnError(ERR_HTTP2_PROTOCOL_ERROR, description);
-    return;
-  }
-
-  // |last_accepted_push_stream_id_| check above guarantees that this stream has
-  // not been activated yet.
-  DCHECK(!IsStreamActive(stream_id));
-
-  last_accepted_push_stream_id_ = stream_id;
-
-  if (availability_state_ == STATE_GOING_AWAY) {
-    RecordSpdyPushedStreamFateHistogram(SpdyPushedStreamFate::kGoingAway);
-    EnqueueResetStreamFrame(stream_id, request_priority,
-                            spdy::ERROR_CODE_REFUSED_STREAM,
-                            "Push stream request received while going away.");
-    return;
-  }
-
-  streams_pushed_count_++;
-
-  // Verify that the response had a URL for us.
-  GURL gurl(quic::SpdyServerPushUtils::GetPromisedUrlFromHeaders(headers));
-  if (!gurl.is_valid()) {
-    RecordSpdyPushedStreamFateHistogram(SpdyPushedStreamFate::kInvalidUrl);
-    EnqueueResetStreamFrame(stream_id, request_priority,
-                            spdy::ERROR_CODE_REFUSED_STREAM,
-                            "Invalid pushed request headers.");
-    return;
-  }
-
-  // GetPromisedUrlFromHeaders() guarantees that the scheme is http or https.
-  DCHECK(gurl.SchemeIs(url::kHttpScheme) || gurl.SchemeIs(url::kHttpsScheme));
-
-  // "Promised requests MUST be cacheable and MUST be safe [...]" (RFC7540
-  // Section 8.2).  Only cacheable safe request methods are GET and HEAD.
-  // GetPromisedUrlFromHeaders() guarantees that the method is GET or HEAD.
-  spdy::Http2HeaderBlock::const_iterator it =
-      headers.find(spdy::kHttp2MethodHeader);
-  DCHECK(it != headers.end() && (it->second == "GET" || it->second == "HEAD"));
-
-  // Verify we have a valid stream association.
-  auto associated_it = active_streams_.find(associated_stream_id);
-  if (associated_it == active_streams_.end()) {
-    RecordSpdyPushedStreamFateHistogram(
-        SpdyPushedStreamFate::kInactiveAssociatedStream);
-    EnqueueResetStreamFrame(stream_id, request_priority,
-                            spdy::ERROR_CODE_STREAM_CLOSED,
-                            "Inactive associated stream.");
-    return;
-  }
-
-  // Cross-origin push validation.
-  GURL associated_url(associated_it->second->url());
-  if (associated_url.DeprecatedGetOriginAsURL() !=
-      gurl.DeprecatedGetOriginAsURL()) {
-    if (!gurl.SchemeIs(url::kHttpsScheme)) {
-      RecordSpdyPushedStreamFateHistogram(
-          SpdyPushedStreamFate::kNonHttpsPushedScheme);
-      EnqueueResetStreamFrame(stream_id, request_priority,
-                              spdy::ERROR_CODE_REFUSED_STREAM,
-                              "Pushed URL must have https scheme.");
-      return;
-    }
-    if (!associated_url.SchemeIs(url::kHttpsScheme)) {
-      RecordSpdyPushedStreamFateHistogram(
-          SpdyPushedStreamFate::kNonHttpsAssociatedScheme);
-      EnqueueResetStreamFrame(stream_id, request_priority,
-                              spdy::ERROR_CODE_REFUSED_STREAM,
-                              "Associated URL must have https scheme.");
-      return;
-    }
-    SSLInfo ssl_info;
-    CHECK(GetSSLInfo(&ssl_info));
-    if (!CanPool(transport_security_state_, ssl_info, *ssl_config_service_,
-                 associated_url.host(), gurl.host(),
-                 spdy_session_key_.network_anonymization_key())) {
-      RecordSpdyPushedStreamFateHistogram(
-          SpdyPushedStreamFate::kCertificateMismatch);
-      EnqueueResetStreamFrame(stream_id, request_priority,
-                              spdy::ERROR_CODE_REFUSED_STREAM,
-                              "Certificate does not match pushed URL.");
-      return;
-    }
-  }
-
-  // Insertion fails if there already is a pushed stream with the same path.
-  if (!pool_->push_promise_index()->RegisterUnclaimedPushedStream(
-          gurl, stream_id, this)) {
-    RecordSpdyPushedStreamFateHistogram(SpdyPushedStreamFate::kDuplicateUrl);
-    EnqueueResetStreamFrame(stream_id, request_priority,
-                            spdy::ERROR_CODE_REFUSED_STREAM,
-                            "Duplicate pushed stream with url: " + gurl.spec());
-    return;
-  }
-
-  base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask(
-      FROM_HERE,
-      base::BindOnce(&SpdySession::CancelPushedStreamIfUnclaimed, GetWeakPtr(),
-                     stream_id),
-      base::Seconds(kPushedStreamLifetimeSeconds));
-
-  net::NetworkTrafficAnnotationTag traffic_annotation =
-      net::DefineNetworkTrafficAnnotation("spdy_push_stream", R"(
-        semantics {
-          sender: "Spdy Session"
-          description:
-            "When a web server needs to push a response to a client, an "
-            "incoming stream is created to reply the client with pushed "
-            "message instead of a message from the network."
-          trigger:
-            "A request by a server to push a response to the client."
-          data: "None."
-          destination: OTHER
-          destination_other:
-            "This stream is not used for sending data."
-        }
-        policy {
-          cookies_allowed: NO
-          setting: "This feature cannot be disabled."
-          policy_exception_justification: "Essential for navigation."
-        }
-    )");
-
-  auto stream = std::make_unique<SpdyStream>(
-      SPDY_PUSH_STREAM, GetWeakPtr(), gurl, request_priority,
-      stream_initial_send_window_size_, stream_max_recv_window_size_, net_log_,
-      traffic_annotation, false /* detect_broken_connection */);
-  stream->set_stream_id(stream_id);
-
-  // Convert RequestPriority to a spdy::SpdyPriority to send in a PRIORITY
-  // frame.
-  spdy::SpdyPriority spdy_priority =
-      ConvertRequestPriorityToSpdyPriority(request_priority);
-  spdy::SpdyStreamId dependency_id = 0;
-  int weight = 0;
-  bool exclusive = false;
-  priority_dependency_state_.OnStreamCreation(
-      stream_id, spdy_priority, &dependency_id, &weight, &exclusive);
-  EnqueuePriorityFrame(stream_id, dependency_id, weight, exclusive);
-
-  // PUSH_PROMISE arrives on associated stream.
-  associated_it->second->AddRawReceivedBytes(last_compressed_frame_len_);
-  last_compressed_frame_len_ = 0;
-
-  InsertActivatedStream(std::move(stream));
-
-  auto active_it = active_streams_.find(stream_id);
-  DCHECK(active_it != active_streams_.end());
-
-  // Notify the push_delegate that a push promise has been received.
-  if (push_delegate_) {
-    push_delegate_->OnPush(std::make_unique<SpdyServerPushHelper>(
-                               weak_factory_.GetWeakPtr(), gurl),
-                           net_log_);
-  }
-
-  active_it->second->OnPushPromiseHeadersReceived(std::move(headers),
-                                                  std::move(gurl));
-  DCHECK(active_it->second->IsReservedRemote());
-  num_pushed_streams_++;
-  return;
+  RecordSpdyPushedStreamFateHistogram(SpdyPushedStreamFate::kPushDisabled);
+  EnqueueResetStreamFrame(stream_id, request_priority,
+                          spdy::ERROR_CODE_REFUSED_STREAM, "Push is disabled.");
 }
 
 void SpdySession::CloseActiveStreamIterator(ActiveStreamMap::iterator it,
@@ -3139,27 +2925,6 @@
   }
 }
 
-void SpdySession::CancelPushedStreamIfUnclaimed(spdy::SpdyStreamId stream_id) {
-  auto active_it = active_streams_.find(stream_id);
-  if (active_it == active_streams_.end())
-    return;
-
-  // Make sure to cancel the correct stream.  It is possible that the pushed
-  // stream |stream_id| is already claimed, and another stream has been pushed
-  // for the same URL.
-  const GURL& url = active_it->second->url();
-  if (pool_->push_promise_index()->FindStream(url, this) != stream_id) {
-    return;
-  }
-
-  RecordSpdyPushedStreamFateHistogram(SpdyPushedStreamFate::kTimeout);
-
-  LogAbandonedActiveStream(active_it, ERR_TIMED_OUT);
-  // CloseActiveStreamIterator() will remove the stream from
-  // |pool_->push_promise_index()|.
-  ResetStreamIterator(active_it, ERR_TIMED_OUT, "Stream not claimed.");
-}
-
 void SpdySession::OnError(
     http2::Http2DecoderAdapter::SpdyFramerError spdy_framer_error) {
   CHECK(in_io_loop_);
diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h
index 887ef13..86590e7 100644
--- a/net/spdy/spdy_session.h
+++ b/net/spdy/spdy_session.h
@@ -937,13 +937,6 @@
   void CompleteStreamRequest(
       const base::WeakPtr<SpdyStreamRequest>& pending_request);
 
-  // Cancel pushed stream with |stream_id|, if still unclaimed.  Identifying a
-  // pushed stream by GURL instead of stream ID could result in incorrect
-  // behavior if a pushed stream was claimed but later another stream was pushed
-  // for the same GURL.
-  // TODO(https://crbug.com/1426477): Remove.
-  void CancelPushedStreamIfUnclaimed(spdy::SpdyStreamId stream_id);
-
   // BufferedSpdyFramerVisitorInterface:
   void OnError(
       http2::Http2DecoderAdapter::SpdyFramerError spdy_framer_error) override;
@@ -1142,11 +1135,6 @@
   // them?
   ActiveStreamMap active_streams_;
 
-  // Not owned. |push_delegate_| outlives the session and handles server pushes
-  // received by session.
-  // TODO(https://crbug.com/1426477): Remove.
-  raw_ptr<ServerPushDelegate> push_delegate_;
-
   // Set of all created streams but that have not yet sent any frames.
   //
   // |created_streams_| owns all its SpdyStream objects.
@@ -1358,11 +1346,6 @@
   const bool is_http2_enabled_;
   const bool is_quic_enabled_;
 
-  // TODO(https://crbug.com/1426477): Remove.
-  // If true, accept pushed streams from server.
-  // If false, reset pushed streams immediately.
-  const bool enable_push_;
-
   // True if the server has advertised WebSocket support via
   // spdy::SETTINGS_ENABLE_CONNECT_PROTOCOL, see
   // https://tools.ietf.org/html/draft-ietf-httpbis-h2-websockets-00.
diff --git a/net/ssl/ssl_config_service.cc b/net/ssl/ssl_config_service.cc
index 0bb171c0..ef027606 100644
--- a/net/ssl/ssl_config_service.cc
+++ b/net/ssl/ssl_config_service.cc
@@ -9,6 +9,7 @@
 #include "base/feature_list.h"
 #include "base/observer_list.h"
 #include "net/base/features.h"
+#include "net/ssl/ssl_config_service_defaults.h"
 
 namespace net {
 
@@ -20,10 +21,12 @@
                                const net::SSLContextConfig& config2) {
   return std::tie(config1.version_min, config1.version_max,
                   config1.disabled_cipher_suites, config1.post_quantum_enabled,
-                  config1.ech_enabled, config1.insecure_hash_override) ==
+                  config1.ech_enabled, config1.insecure_hash_override,
+                  config1.rsa_key_usage_for_local_anchors_override) ==
          std::tie(config2.version_min, config2.version_max,
                   config2.disabled_cipher_suites, config2.post_quantum_enabled,
-                  config2.ech_enabled, config2.insecure_hash_override);
+                  config2.ech_enabled, config2.insecure_hash_override,
+                  config2.rsa_key_usage_for_local_anchors_override);
 }
 
 }  // namespace
diff --git a/net/ssl/ssl_config_service.h b/net/ssl/ssl_config_service.h
index e7c229d..bcfb325 100644
--- a/net/ssl/ssl_config_service.h
+++ b/net/ssl/ssl_config_service.h
@@ -57,6 +57,17 @@
   // handshakes. If `absl::nullopt`, this is determined by feature flags.
   absl::optional<bool> insecure_hash_override;
 
+  // If specified, controls whether the X.509 keyUsage extension is checked in
+  // TLS 1.2 for RSA certificates that chain to a local trust anchor. If
+  // `absl::nullopt`, this is determined by feature flags.
+  //
+  // Independent of the setting of this value, keyUsage is always checked at TLS
+  // 1.3, for ECDSA certificates, and for all certificates that chain to a known
+  // root.
+  //
+  // TODO(crbug.com/795089): Enable this unconditionally.
+  absl::optional<bool> rsa_key_usage_for_local_anchors_override;
+
   // ADDING MORE HERE? Don't forget to update `SSLContextConfigsAreEqual`.
 };
 
diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc
index c7cfa008..8a1f7c5 100644
--- a/net/test/embedded_test_server/embedded_test_server.cc
+++ b/net/test/embedded_test_server/embedded_test_server.cc
@@ -460,6 +460,10 @@
     leaf->SetSubjectAltNames(cert_config_.dns_names, cert_config_.ip_addresses);
   }
 
+  if (!cert_config_.key_usages.empty()) {
+    leaf->SetKeyUsages(cert_config_.key_usages);
+  }
+
   const std::string leaf_serial_text =
       base::NumberToString(leaf->GetSerialNumber());
   const std::string intermediate_serial_text =
diff --git a/net/test/embedded_test_server/embedded_test_server.h b/net/test/embedded_test_server/embedded_test_server.h
index d18a335..aab5739 100644
--- a/net/test/embedded_test_server/embedded_test_server.h
+++ b/net/test/embedded_test_server/embedded_test_server.h
@@ -25,6 +25,7 @@
 #include "net/base/host_port_pair.h"
 #include "net/base/ip_endpoint.h"
 #include "net/cert/ocsp_revocation_status.h"
+#include "net/cert/pki/parse_certificate.h"
 #include "net/cert/test_root_certs.h"
 #include "net/cert/x509_certificate.h"
 #include "net/socket/ssl_server_socket.h"
@@ -310,6 +311,9 @@
 
     // A list of IP addresses to include in the leaf subjectAltName extension.
     std::vector<net::IPAddress> ip_addresses;
+
+    // A list of key usages to include in the leaf keyUsage extension.
+    std::vector<KeyUsageBit> key_usages;
   };
 
   typedef base::RepeatingCallback<std::unique_ptr<HttpResponse>(
diff --git a/services/device/geolocation/network_location_provider_unittest.cc b/services/device/geolocation/network_location_provider_unittest.cc
index 23c50a5..89416e88 100644
--- a/services/device/geolocation/network_location_provider_unittest.cc
+++ b/services/device/geolocation/network_location_provider_unittest.cc
@@ -193,7 +193,6 @@
       ap.radio_signal_strength = ap_count - i;
       ap.channel = IndexToChannel(i);
       ap.signal_to_noise = i + 42;
-      ap.ssid = u"Some nice+network|name\\";
       data.access_point_data.insert(ap);
     }
     return data;
@@ -206,7 +205,6 @@
       ap.radio_signal_strength = ap_count - i;
       ap.channel = IndexToChannel(i);
       ap.signal_to_noise = i + 42;
-      ap.ssid = u"Some nice+network|name\\";
       data.access_point_data.insert(ap);
     }
     return data;
diff --git a/services/device/geolocation/position_cache_test_util.cc b/services/device/geolocation/position_cache_test_util.cc
index 8e8458e..2fb5167 100644
--- a/services/device/geolocation/position_cache_test_util.cc
+++ b/services/device/geolocation/position_cache_test_util.cc
@@ -22,8 +22,6 @@
         base::ASCIIToUTF16(base::Uuid::GenerateRandomV4().AsLowercaseString());
     single_access_point.radio_signal_strength = 4;
     single_access_point.signal_to_noise = 5;
-    single_access_point.ssid =
-        base::ASCIIToUTF16(base::Uuid::GenerateRandomV4().AsLowercaseString());
     wifi_data.access_point_data.insert(single_access_point);
   }
   return wifi_data;
diff --git a/services/device/geolocation/wifi_data.h b/services/device/geolocation/wifi_data.h
index e94746a2..75852dc 100644
--- a/services/device/geolocation/wifi_data.h
+++ b/services/device/geolocation/wifi_data.h
@@ -21,7 +21,6 @@
   int radio_signal_strength;  // Measured in dBm
   int channel;
   int signal_to_noise;  // Ratio in dB
-  std::u16string ssid;  // Network identifier
 };
 
 // This is to allow AccessPointData to be used in std::set. We order
diff --git a/services/device/geolocation/wifi_data_provider_chromeos.cc b/services/device/geolocation/wifi_data_provider_chromeos.cc
index 7b4cbf6..292ec4a 100644
--- a/services/device/geolocation/wifi_data_provider_chromeos.cc
+++ b/services/device/geolocation/wifi_data_provider_chromeos.cc
@@ -81,7 +81,6 @@
     ap_data.radio_signal_strength = access_point.signal_strength;
     ap_data.channel = access_point.channel;
     ap_data.signal_to_noise = access_point.signal_to_noise;
-    ap_data.ssid = base::UTF8ToUTF16(access_point.ssid);
     wifi_data.access_point_data.insert(ap_data);
   }
   return wifi_data;
diff --git a/services/device/geolocation/wifi_data_provider_common_unittest.cc b/services/device/geolocation/wifi_data_provider_common_unittest.cc
index 5162f7a0..10bb90f 100644
--- a/services/device/geolocation/wifi_data_provider_common_unittest.cc
+++ b/services/device/geolocation/wifi_data_provider_common_unittest.cc
@@ -9,7 +9,6 @@
 #include "base/functional/callback_helpers.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
-#include "base/strings/utf_string_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/test/task_environment.h"
 #include "services/device/geolocation/wifi_data_provider_handle.h"
@@ -208,7 +207,6 @@
   single_access_point.mac_address = u"00:11:22:33:44:55";
   single_access_point.radio_signal_strength = 4;
   single_access_point.signal_to_noise = 5;
-  single_access_point.ssid = u"foossid";
 
   WifiData::AccessPointDataSet data_out({single_access_point});
 
@@ -226,7 +224,8 @@
   WifiData data;
   EXPECT_TRUE(provider_->GetData(&data));
   ASSERT_EQ(1u, data.access_point_data.size());
-  EXPECT_EQ(single_access_point.ssid, data.access_point_data.begin()->ssid);
+  EXPECT_EQ(single_access_point.mac_address,
+            data.access_point_data.begin()->mac_address);
 }
 
 TEST_F(GeolocationWifiDataProviderCommonTest, DelayedByPolicy) {
diff --git a/services/device/geolocation/wifi_data_provider_common_win.cc b/services/device/geolocation/wifi_data_provider_common_win.cc
index 3c2b600..56f807b1 100644
--- a/services/device/geolocation/wifi_data_provider_common_win.cc
+++ b/services/device/geolocation/wifi_data_provider_common_win.cc
@@ -7,21 +7,17 @@
 #include <assert.h>
 #include <stdint.h>
 
-#include "base/strings/utf_string_conversions.h"
 #include "services/device/geolocation/wifi_data_provider_common.h"
 
 namespace device {
 
 bool ConvertToAccessPointData(const NDIS_WLAN_BSSID& data,
                               AccessPointData* access_point_data) {
-  // Currently we get only MAC address, signal strength and SSID.
+  // Currently we get only MAC address and signal strength.
   // TODO(steveblock): Work out how to get age, channel and signal-to-noise.
   DCHECK(access_point_data);
   access_point_data->mac_address = MacAddressAsString16(data.MacAddress);
   access_point_data->radio_signal_strength = data.Rssi;
-  // Note that _NDIS_802_11_SSID::Ssid::Ssid is not null-terminated.
-  base::UTF8ToUTF16(reinterpret_cast<const char*>(data.Ssid.Ssid),
-                    data.Ssid.SsidLength, &access_point_data->ssid);
   return true;
 }
 
diff --git a/services/device/geolocation/wifi_data_provider_lacros.cc b/services/device/geolocation/wifi_data_provider_lacros.cc
index b385775b..d4838e19 100644
--- a/services/device/geolocation/wifi_data_provider_lacros.cc
+++ b/services/device/geolocation/wifi_data_provider_lacros.cc
@@ -38,7 +38,6 @@
     ap_data.radio_signal_strength = access_point->radio_signal_strength;
     ap_data.channel = access_point->channel;
     ap_data.signal_to_noise = access_point->signal_to_noise;
-    ap_data.ssid = access_point->ssid;
     wifi_data.access_point_data.insert(std::move(ap_data));
   }
 }
diff --git a/services/device/geolocation/wifi_data_provider_linux.cc b/services/device/geolocation/wifi_data_provider_linux.cc
index a3c8af7..1f12179 100644
--- a/services/device/geolocation/wifi_data_provider_linux.cc
+++ b/services/device/geolocation/wifi_data_provider_linux.cc
@@ -234,30 +234,6 @@
         kNetworkManagerServiceName, access_point_path);
 
     AccessPointData access_point_data;
-    {
-      std::unique_ptr<dbus::Response> ssid_response(
-          GetAccessPointProperty(access_point_proxy, "Ssid"));
-      if (!ssid_response)
-        continue;
-      // The response should contain a variant that contains an array of bytes.
-      dbus::MessageReader ssid_reader(ssid_response.get());
-      dbus::MessageReader variant_reader(ssid_response.get());
-      if (!ssid_reader.PopVariant(&variant_reader)) {
-        LOG(WARNING) << "Unexpected response for " << access_point_path.value()
-                     << ": " << ssid_response->ToString();
-        continue;
-      }
-      const uint8_t* ssid_bytes = nullptr;
-      size_t ssid_length = 0;
-      if (!variant_reader.PopArrayOfBytes(&ssid_bytes, &ssid_length)) {
-        LOG(WARNING) << "Unexpected response for " << access_point_path.value()
-                     << ": " << ssid_response->ToString();
-        continue;
-      }
-      std::string ssid(ssid_bytes, ssid_bytes + ssid_length);
-      access_point_data.ssid = base::UTF8ToUTF16(ssid);
-    }
-
     {  // Read the mac address
       std::unique_ptr<dbus::Response> mac_response(
           GetAccessPointProperty(access_point_proxy, "HwAddress"));
@@ -315,7 +291,6 @@
       access_point_data.channel = frquency_in_khz_to_channel(frequency * 1000);
     }
     VLOG(1) << "Access point data of " << access_point_path.value() << ": "
-            << "SSID: " << access_point_data.ssid << ", "
             << "MAC: " << access_point_data.mac_address << ", "
             << "Strength: " << access_point_data.radio_signal_strength << ", "
             << "Channel: " << access_point_data.channel;
diff --git a/services/device/geolocation/wifi_data_provider_linux_unittest.cc b/services/device/geolocation/wifi_data_provider_linux_unittest.cc
index a2384ffc..dd3246d 100644
--- a/services/device/geolocation/wifi_data_provider_linux_unittest.cc
+++ b/services/device/geolocation/wifi_data_provider_linux_unittest.cc
@@ -185,13 +185,7 @@
             dbus::Response::CreateEmpty();
         dbus::MessageWriter writer(response.get());
 
-        if (property_name == "Ssid") {
-          const uint8_t kSsid[] = {0x74, 0x65, 0x73, 0x74};  // "test"
-          dbus::MessageWriter variant_writer(response.get());
-          writer.OpenVariant("ay", &variant_writer);
-          variant_writer.AppendArrayOfBytes(kSsid, std::size(kSsid));
-          writer.CloseContainer(&variant_writer);
-        } else if (property_name == "HwAddress") {
+        if (property_name == "HwAddress") {
           // This will be converted to "00-11-22-33-44-55".
           const std::string kMacAddress = "00:11:22:33:44:55";
           writer.AppendVariantOfString(kMacAddress);
@@ -222,7 +216,6 @@
 
   // Check the contents of the access point data.
   // The expected values come from CreateAccessPointProxyResponse() above.
-  EXPECT_EQ("test", base::UTF16ToUTF8(access_point_data.ssid));
   EXPECT_EQ("00-11-22-33-44-55",
             base::UTF16ToUTF8(access_point_data.mac_address));
   EXPECT_EQ(-50, access_point_data.radio_signal_strength);
diff --git a/services/device/geolocation/wifi_data_provider_mac.mm b/services/device/geolocation/wifi_data_provider_mac.mm
index 0048ee1..7cab385 100644
--- a/services/device/geolocation/wifi_data_provider_mac.mm
+++ b/services/device/geolocation/wifi_data_provider_mac.mm
@@ -8,7 +8,6 @@
 #import <Foundation/Foundation.h>
 
 #include "base/logging.h"
-#include "base/memory/ptr_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "services/device/geolocation/wifi_data_provider_common.h"
 #include "services/device/geolocation/wifi_data_provider_handle.h"
@@ -68,7 +67,6 @@
         access_point_data.channel = network.wlanChannel.channelNumber;
         access_point_data.signal_to_noise =
             access_point_data.radio_signal_strength - network.noiseMeasurement;
-        access_point_data.ssid = base::SysNSStringToUTF16(network.ssid);
         data->insert(access_point_data);
       }
     }
diff --git a/services/device/geolocation/wifi_data_provider_win.cc b/services/device/geolocation/wifi_data_provider_win.cc
index 52c724baa..b2db40f 100644
--- a/services/device/geolocation/wifi_data_provider_win.cc
+++ b/services/device/geolocation/wifi_data_provider_win.cc
@@ -9,11 +9,6 @@
 #include <wlanapi.h>
 
 #include "base/logging.h"
-#include "base/memory/free_deleter.h"
-#include "base/memory/ptr_util.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/win/windows_version.h"
 #include "services/device/geolocation/wifi_data_provider_common.h"
 #include "services/device/geolocation/wifi_data_provider_common_win.h"
 #include "services/device/geolocation/wifi_data_provider_handle.h"
@@ -59,13 +54,9 @@
 // Extracts data for an access point and converts to AccessPointData.
 AccessPointData GetNetworkData(const WLAN_BSS_ENTRY& bss_entry) {
   AccessPointData access_point_data;
-  // Currently we get only MAC address, signal strength and SSID.
+  // Currently we get only MAC address and signal strength.
   access_point_data.mac_address = MacAddressAsString16(bss_entry.dot11Bssid);
   access_point_data.radio_signal_strength = bss_entry.lRssi;
-  // bss_entry.dot11Ssid.ucSSID is not null-terminated.
-  base::UTF8ToUTF16(reinterpret_cast<const char*>(bss_entry.dot11Ssid.ucSSID),
-                    static_cast<ULONG>(bss_entry.dot11Ssid.uSSIDLength),
-                    &access_point_data.ssid);
 
   // TODO(steveblock): Is it possible to get the following?
   // access_point_data.signal_to_noise
diff --git a/services/network/public/mojom/ssl_config.mojom b/services/network/public/mojom/ssl_config.mojom
index 29edc1a..0914f592 100644
--- a/services/network/public/mojom/ssl_config.mojom
+++ b/services/network/public/mojom/ssl_config.mojom
@@ -50,6 +50,17 @@
   // If specified, controls whether insecure hashes are allowed in TLS
   // handshakes. If kUnset, this is determined by feature flags.
   OptionalBool insecure_hash_override = kUnset;
+
+  // If specified, controls whether the X.509 keyUsage extension is checked in
+  // TLS 1.2 for RSA certificates that chain to a local trust anchor. If kUnset,
+  // this is determined by feature flags.
+  //
+  // Independent of the setting of this value, keyUsage is always checked at TLS
+  // 1.3, for ECDSA certificates, and for all certificates that chain to a known
+  // root.
+  //
+  // TODO(crbug.com/795089): Enable this unconditionally.
+  OptionalBool rsa_key_usage_for_local_anchors_override = kUnset;
 };
 
 // Receives SSL configuration updates.
diff --git a/services/network/ssl_config_type_converter.cc b/services/network/ssl_config_type_converter.cc
index 3455647..f5c7f4ec 100644
--- a/services/network/ssl_config_type_converter.cc
+++ b/services/network/ssl_config_type_converter.cc
@@ -50,6 +50,8 @@
   net_config.ech_enabled = mojo_config->ech_enabled;
   net_config.insecure_hash_override =
       OptionalBoolFromMojo(mojo_config->insecure_hash_override);
+  net_config.rsa_key_usage_for_local_anchors_override = OptionalBoolFromMojo(
+      mojo_config->rsa_key_usage_for_local_anchors_override);
   return net_config;
 }
 
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
index 4ab6056..edf9373 100644
--- a/skia/BUILD.gn
+++ b/skia/BUILD.gn
@@ -673,13 +673,6 @@
 }
 
 # Bits that involve special vector-y hardware.
-if (current_cpu == "arm64") {
-  skia_source_set("skia_opts_crc32") {
-    sources = skia_opts.crc32_sources
-    cflags = [ "-march=armv8-a+crc" ]
-    visibility = [ ":skia_opts" ]
-  }
-}
 if (current_cpu == "x86" || current_cpu == "x64") {
   skia_source_set("skia_opts_sse3") {
     sources = skia_opts.ssse3_sources
@@ -691,16 +684,6 @@
     }
     visibility = [ ":skia_opts" ]
   }
-  skia_source_set("skia_opts_sse42") {
-    sources = skia_opts.sse42_sources
-    if (!is_win || is_clang) {
-      cflags = [ "-msse4.2" ]
-    }
-    if (is_win) {
-      defines = [ "SK_CPU_SSE_LEVEL=42" ]
-    }
-    visibility = [ ":skia_opts" ]
-  }
   skia_source_set("skia_opts_avx") {
     sources = skia_opts.avx_sources
     if (!is_win) {
@@ -751,7 +734,6 @@
       ":skia_opts_hsw",
       ":skia_opts_skx",
       ":skia_opts_sse3",
-      ":skia_opts_sse42",
     ]
   } else if (current_cpu == "arm") {
     # The assembly uses the frame pointer register (r7 in Thumb/r11 in
@@ -771,7 +753,7 @@
       }
     }
   } else if (current_cpu == "arm64") {
-    deps += [ ":skia_opts_crc32" ]
+    # Conditional and empty body needed to avoid assert() below.
   } else if (current_cpu == "mipsel") {
     cflags += [ "-fomit-frame-pointer" ]
   } else if (current_cpu == "mips64el") {
diff --git a/testing/buildbot/autoshard_exceptions.json b/testing/buildbot/autoshard_exceptions.json
index 25a17cc..e643083 100644
--- a/testing/buildbot/autoshard_exceptions.json
+++ b/testing/buildbot/autoshard_exceptions.json
@@ -388,37 +388,5 @@
                 "shards": "3"
             }
         }
-    },
-    "chromium.win": {
-        "Win10 Tests x64": {
-            "updater_tests": {
-                "debug": {
-                    "avg_num_builds_per_peak_hour": "75.0",
-                    "estimated_bot_hour_delta": "-1.76",
-                    "prev_avg_pending_time_sec": "200.3",
-                    "prev_p50_pending_time_sec": "14.0",
-                    "prev_p90_pending_time_sec": "669.0",
-                    "prev_percentile_duration_minutes": "5.69",
-                    "prev_shard_count": "2",
-                    "simulated_max_shard_duration": "11.38",
-                    "try_builder": "win-rel"
-                },
-                "shards": "1"
-            },
-            "updater_tests_system": {
-                "debug": {
-                    "avg_num_builds_per_peak_hour": "75.0",
-                    "estimated_bot_hour_delta": "-1.77",
-                    "prev_avg_pending_time_sec": "201.0",
-                    "prev_p50_pending_time_sec": "15.0",
-                    "prev_p90_pending_time_sec": "668.0",
-                    "prev_percentile_duration_minutes": "5.87",
-                    "prev_shard_count": "2",
-                    "simulated_max_shard_duration": "11.74",
-                    "try_builder": "win-rel"
-                },
-                "shards": "1"
-            }
-        }
     }
 }
\ No newline at end of file
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json
index dc325b0..9b98248 100644
--- a/testing/buildbot/chromium.chromiumos.json
+++ b/testing/buildbot/chromium.chromiumos.json
@@ -5730,9 +5730,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -5743,8 +5743,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -5895,9 +5895,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -5908,8 +5908,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -6042,9 +6042,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -6055,8 +6055,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json
index 1ff02197..6cd5404 100644
--- a/testing/buildbot/chromium.coverage.json
+++ b/testing/buildbot/chromium.coverage.json
@@ -25491,9 +25491,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -25504,8 +25504,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -25656,9 +25656,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -25669,8 +25669,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -25803,9 +25803,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -25816,8 +25816,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index cfc79d90..d06b848 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -40146,9 +40146,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -40158,8 +40158,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -40311,9 +40311,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -40323,8 +40323,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -40458,9 +40458,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -40470,8 +40470,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -41935,9 +41935,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -41947,8 +41947,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -42100,9 +42100,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -42112,8 +42112,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -42247,9 +42247,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -42259,8 +42259,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -42995,9 +42995,9 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome"
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
@@ -43007,8 +43007,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index 05d541e..4eb38cb 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -18080,12 +18080,12 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome",
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome",
           "--test-launcher-print-test-stdio=always",
           "--combine-ash-logs-on-bots",
           "--asan-symbolize-output"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -18096,8 +18096,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -18265,12 +18265,12 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome",
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome",
           "--test-launcher-print-test-stdio=always",
           "--combine-ash-logs-on-bots",
           "--asan-symbolize-output"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -18281,8 +18281,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
@@ -18427,12 +18427,12 @@
       {
         "args": [
           "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter",
-          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome",
+          "--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome",
           "--test-launcher-print-test-stdio=always",
           "--combine-ash-logs-on-bots",
           "--asan-symbolize-output"
         ],
-        "description": "Run with ash-chrome version 115.0.5788.0",
+        "description": "Run with ash-chrome version 115.0.5789.0",
         "isolate_profile_data": true,
         "merge": {
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -18443,8 +18443,8 @@
           "cipd_packages": [
             {
               "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip",
-              "location": "lacros_version_skew_tests_v115.0.5788.0",
-              "revision": "version:115.0.5788.0"
+              "location": "lacros_version_skew_tests_v115.0.5789.0",
+              "revision": "version:115.0.5789.0"
             }
           ],
           "dimension_sets": [
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index ee6c71e..08aacae 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -1741,8 +1741,7 @@
               "os": "Windows-10-19045"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 1
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "updater_tests",
         "test_id_prefix": "ninja://chrome/updater:updater_tests/"
@@ -1760,8 +1759,7 @@
               "os": "Windows-10-19045"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 1
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "updater_tests_system",
         "test_id_prefix": "ninja://chrome/updater:updater_tests_system/"
diff --git a/testing/buildbot/query_optimal_shard_counts.py b/testing/buildbot/query_optimal_shard_counts.py
index 0c1e8b5..299a384 100755
--- a/testing/buildbot/query_optimal_shard_counts.py
+++ b/testing/buildbot/query_optimal_shard_counts.py
@@ -414,6 +414,11 @@
     if int(r['optimal_shard_count']) == int(r['shard_count']):
       continue
 
+    # Throw out any attempt to shard to 1. This will lock the test suite
+    # and prevent go/nplus1shardsproposal from running new shardings
+    if int(r['optimal_shard_count']) == 1:
+      continue
+
     # Shard values may have changed over the lookback period, so the query
     # results could have multiple rows for each builder+test_suite. Logic below
     # skips the rows that are for outdated shard counts.
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index ada6274b..e1f4120 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -22,16 +22,16 @@
   },
   'LACROS_VERSION_SKEW_CANARY': {
     'args': [
-      '--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5788.0/test_ash_chrome',
+      '--ash-chrome-path-override=../../lacros_version_skew_tests_v115.0.5789.0/test_ash_chrome',
     ],
-    'description': 'Run with ash-chrome version 115.0.5788.0',
+    'description': 'Run with ash-chrome version 115.0.5789.0',
     'identifier': 'Lacros version skew testing ash canary',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip',
-          'location': 'lacros_version_skew_tests_v115.0.5788.0',
-          'revision': 'version:115.0.5788.0',
+          'location': 'lacros_version_skew_tests_v115.0.5789.0',
+          'revision': 'version:115.0.5789.0',
         },
       ],
     },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index bbfca2d4..f131e6c6 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -4579,6 +4579,23 @@
             ]
         }
     ],
+    "DirectCompositorThreadIpc": [
+        {
+            "platforms": [
+                "android",
+                "android_webview",
+                "linux"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "DirectCompositorThreadIpc"
+                    ]
+                }
+            ]
+        }
+    ],
     "DisableGles2ForOopR": [
         {
             "platforms": [
@@ -5534,25 +5551,6 @@
             ]
         }
     ],
-    "ExtensionsMenuInAppMenu": [
-        {
-            "platforms": [
-                "chromeos",
-                "chromeos_lacros",
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "enable_features": [
-                        "ExtensionsMenuInAppMenu"
-                    ]
-                }
-            ]
-        }
-    ],
     "FastCheckout": [
         {
             "platforms": [
@@ -6860,17 +6858,6 @@
             ],
             "experiments": [
                 {
-                    "name": "EnabledOnAllTriggers",
-                    "params": {
-                        "enable_promo_on_login_with_autofill": "true",
-                        "enable_promo_on_password_copied": "true",
-                        "enable_promo_on_password_saved": "true"
-                    },
-                    "enable_features": [
-                        "CredentialProviderExtensionPromo"
-                    ]
-                },
-                {
                     "name": "EnabledOnPasswordSaved",
                     "params": {
                         "enable_promo_on_password_saved": "true"
@@ -11651,21 +11638,6 @@
             ]
         }
     ],
-    "SafeBrowsingComponentUpdaterAndroidProtegoAllowlist": [
-        {
-            "platforms": [
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "enable_features": [
-                        "SafeBrowsingComponentUpdaterAndroidProtegoAllowlist"
-                    ]
-                }
-            ]
-        }
-    ],
     "SafeBrowsingCsbrrNewDownloadTrigger": [
         {
             "platforms": [
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index 17604b5..a7a8855 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -642,6 +642,10 @@
         }
 
         switch (dependencyId) {
+            case 'androidx_privacysandbox_ads_ads_adservices':
+                sb.append('  # https://crbug.com/1448095\n')
+                sb.append('  mergeable_android_manifets = [ "0_privacysandbox_AndroidManifest.xml" ]\n')
+                break
             case 'androidx_annotation_annotation_jvm':
                 sb.append('  # https://crbug.com/989505\n')
                 sb.append('  jar_excluded_patterns = [ "META-INF/proguard/*" ]\n')
diff --git a/third_party/androidx/0_privacysandbox_AndroidManifest.xml b/third_party/androidx/0_privacysandbox_AndroidManifest.xml
new file mode 100644
index 0000000..da6c78ff
--- /dev/null
+++ b/third_party/androidx/0_privacysandbox_AndroidManifest.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright 2023 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="org.chromium.privacysandbox.overrides">
+
+    <!-- Library needed for androidx.privacysandbox.ads:ads-adservices to work on Android R & S,
+      which we do not currently support. Removing out of caution to prevent the library from
+      slowing down renderer process start-up.
+      https://crbug.com/1448095
+    -->
+    <application>
+      <uses-library android:name="android.ext.adservices" tools:node="remove" />
+    </application>
+</manifest>
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index f4d48a7..bc8570d3 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -1529,6 +1529,10 @@
              "StylusPointerAdjustment",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
+BASE_FEATURE(kHiddenSelectionBounds,
+             "HiddenSelectionBounds",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 BASE_FEATURE(kDisableArrayBufferSizeLimitsForTesting,
              "DisableArrayBufferSizeLimitsForTesting",
              base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1824,8 +1828,8 @@
              "MainThreadHighPriorityImageLoading",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
-BASE_FEATURE(kInputIpcDirect,
-             "InputIpcDirect",
+BASE_FEATURE(kDirectCompositorThreadIpc,
+             "DirectCompositorThreadIpc",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
 }  // namespace features
diff --git a/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc b/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
index 28211be..8ea584db 100644
--- a/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
+++ b/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
@@ -413,8 +413,8 @@
       !data.ReadNestedConfigs(&out_config->nested_configs_) ||
       !data.ReadSharedStorageBudgetMetadata(
           &out_config->shared_storage_budget_metadata_) ||
-      !data.ReadRequiredPermissionsToLoad(
-          &out_config->required_permissions_to_load_)) {
+      !data.ReadEffectiveEnabledPermissions(
+          &out_config->effective_enabled_permissions_)) {
     return false;
   }
 
@@ -465,8 +465,8 @@
       !data.ReadNestedUrnConfigPairs(&nested_urn_config_pairs) ||
       !data.ReadSharedStorageBudgetMetadata(
           &out_properties->shared_storage_budget_metadata_) ||
-      !data.ReadRequiredPermissionsToLoad(
-          &out_properties->required_permissions_to_load_)) {
+      !data.ReadEffectiveEnabledPermissions(
+          &out_properties->effective_enabled_permissions_)) {
     return false;
   }
 
diff --git a/third_party/blink/common/permissions_policy/permissions_policy.cc b/third_party/blink/common/permissions_policy/permissions_policy.cc
index 1fb1105f..a026dcc 100644
--- a/third_party/blink/common/permissions_policy/permissions_policy.cc
+++ b/third_party/blink/common/permissions_policy/permissions_policy.cc
@@ -368,16 +368,16 @@
 std::unique_ptr<PermissionsPolicy> PermissionsPolicy::CreateForFencedFrame(
     const url::Origin& origin,
     base::span<const blink::mojom::PermissionsPolicyFeature>
-        required_permissions_to_load) {
+        effective_enabled_permissions) {
   return CreateForFencedFrame(origin, GetPermissionsPolicyFeatureList(),
-                              required_permissions_to_load);
+                              effective_enabled_permissions);
 }
 
 std::unique_ptr<PermissionsPolicy> PermissionsPolicy::CreateForFencedFrame(
     const url::Origin& origin,
     const PermissionsPolicyFeatureList& features,
     base::span<const blink::mojom::PermissionsPolicyFeature>
-        required_permissions_to_load) {
+        effective_enabled_permissions) {
   std::unique_ptr<PermissionsPolicy> new_policy =
       base::WrapUnique(new PermissionsPolicy(origin, features));
 
@@ -385,7 +385,7 @@
     new_policy->inherited_policies_[feature.first] = false;
   }
   for (const blink::mojom::PermissionsPolicyFeature feature :
-       required_permissions_to_load) {
+       effective_enabled_permissions) {
     new_policy->inherited_policies_[feature] = true;
   }
 
diff --git a/third_party/blink/common/permissions_policy/permissions_policy_unittest.cc b/third_party/blink/common/permissions_policy/permissions_policy_unittest.cc
index 9a69cc1..c47d70f 100644
--- a/third_party/blink/common/permissions_policy/permissions_policy_unittest.cc
+++ b/third_party/blink/common/permissions_policy/permissions_policy_unittest.cc
@@ -78,9 +78,9 @@
   std::unique_ptr<PermissionsPolicy> CreateForFencedFrame(
       const url::Origin& origin,
       base::span<const blink::mojom::PermissionsPolicyFeature>
-          required_permissions_to_load) {
+          effective_enabled_permissions) {
     return PermissionsPolicy::CreateForFencedFrame(
-        origin, feature_list_, required_permissions_to_load);
+        origin, feature_list_, effective_enabled_permissions);
   }
 
   bool IsFeatureEnabledForSubresourceRequestAssumingOptIn(
@@ -2562,14 +2562,14 @@
 
 TEST_F(PermissionsPolicyTest, CreateForFledgeFencedFrame) {
   std::vector<blink::mojom::PermissionsPolicyFeature>
-      required_permissions_to_load;
-  required_permissions_to_load.insert(
-      required_permissions_to_load.end(),
+      effective_enabled_permissions;
+  effective_enabled_permissions.insert(
+      effective_enabled_permissions.end(),
       std::begin(blink::kFencedFrameFledgeDefaultRequiredFeatures),
       std::end(blink::kFencedFrameFledgeDefaultRequiredFeatures));
 
   std::unique_ptr<PermissionsPolicy> policy =
-      CreateForFencedFrame(origin_a_, required_permissions_to_load);
+      CreateForFencedFrame(origin_a_, effective_enabled_permissions);
   EXPECT_FALSE(policy->IsFeatureEnabled(kDefaultOnFeature));
   EXPECT_FALSE(policy->IsFeatureEnabled(kDefaultSelfFeature));
   EXPECT_TRUE(policy->IsFeatureEnabled(
@@ -2580,14 +2580,14 @@
 
 TEST_F(PermissionsPolicyTest, CreateForSharedStorageFencedFrame) {
   std::vector<blink::mojom::PermissionsPolicyFeature>
-      required_permissions_to_load;
-  required_permissions_to_load.insert(
-      required_permissions_to_load.end(),
+      effective_enabled_permissions;
+  effective_enabled_permissions.insert(
+      effective_enabled_permissions.end(),
       std::begin(blink::kFencedFrameSharedStorageDefaultRequiredFeatures),
       std::end(blink::kFencedFrameSharedStorageDefaultRequiredFeatures));
 
   std::unique_ptr<PermissionsPolicy> policy =
-      CreateForFencedFrame(origin_a_, required_permissions_to_load);
+      CreateForFencedFrame(origin_a_, effective_enabled_permissions);
   EXPECT_FALSE(policy->IsFeatureEnabled(kDefaultOnFeature));
   EXPECT_FALSE(policy->IsFeatureEnabled(kDefaultSelfFeature));
   EXPECT_TRUE(policy->IsFeatureEnabled(
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
index 42ae8e6..d61d6da 100644
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -787,6 +787,11 @@
 // enabling functions like writing into a nearby input element.
 BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kStylusPointerAdjustment);
 
+// Record the bounds of a selection even when there is no selection handle.
+// This allows providing more information to the IME, but was disabled because
+// of https://crbug.com/1441243.
+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kHiddenSelectionBounds);
+
 // TODO(https://crbug.com/1201109): temporary flag to disable new ArrayBuffer
 // size limits, so that tests can be written against code receiving these
 // buffers. Remove when the bindings code instituting these limits is removed.
@@ -1121,7 +1126,7 @@
 
 // Enables input IPC to directly target the renderer's compositor thread without
 // hopping through the IO thread first.
-BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kInputIpcDirect);
+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDirectCompositorThreadIpc);
 
 }  // namespace features
 }  // namespace blink
diff --git a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h
index b8a4afa..67eade1 100644
--- a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h
+++ b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h
@@ -128,8 +128,8 @@
   }
   const DeprecatedFencedFrameMode& mode() const { return mode_; }
   const std::vector<blink::mojom::PermissionsPolicyFeature>&
-  required_permissions_to_load() const {
-    return required_permissions_to_load_;
+  effective_enabled_permissions() const {
+    return effective_enabled_permissions_;
   }
 
  private:
@@ -155,7 +155,7 @@
   DeprecatedFencedFrameMode mode_ = DeprecatedFencedFrameMode::kDefault;
 
   std::vector<blink::mojom::PermissionsPolicyFeature>
-      required_permissions_to_load_;
+      effective_enabled_permissions_;
 };
 
 // Represents a set of fenced frame properties (instantiated from a config) that
@@ -202,8 +202,8 @@
   }
   const DeprecatedFencedFrameMode& mode() const { return mode_; }
   const std::vector<blink::mojom::PermissionsPolicyFeature>&
-  required_permissions_to_load() const {
-    return required_permissions_to_load_;
+  effective_enabled_permissions() const {
+    return effective_enabled_permissions_;
   }
 
  private:
@@ -226,7 +226,7 @@
   bool has_fenced_frame_reporting_ = false;
   DeprecatedFencedFrameMode mode_ = DeprecatedFencedFrameMode::kDefault;
   std::vector<blink::mojom::PermissionsPolicyFeature>
-      required_permissions_to_load_;
+      effective_enabled_permissions_;
 };
 
 }  // namespace blink::FencedFrame
diff --git a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
index ab8e5c3..18dc500 100644
--- a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
+++ b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
@@ -244,9 +244,9 @@
   }
 
   static const std::vector<blink::mojom::PermissionsPolicyFeature>&
-  required_permissions_to_load(
+  effective_enabled_permissions(
       const blink::FencedFrame::RedactedFencedFrameConfig& config) {
-    return config.required_permissions_to_load_;
+    return config.effective_enabled_permissions_;
   }
 
   static bool Read(blink::mojom::FencedFrameConfigDataView data,
@@ -298,9 +298,9 @@
   }
 
   static const std::vector<blink::mojom::PermissionsPolicyFeature>&
-  required_permissions_to_load(
+  effective_enabled_permissions(
       const blink::FencedFrame::RedactedFencedFrameProperties& properties) {
-    return properties.required_permissions_to_load_;
+    return properties.effective_enabled_permissions_;
   }
 
   static bool Read(
diff --git a/third_party/blink/public/common/metrics/document_update_reason.h b/third_party/blink/public/common/metrics/document_update_reason.h
index 0e320cf..b0dd040 100644
--- a/third_party/blink/public/common/metrics/document_update_reason.h
+++ b/third_party/blink/public/common/metrics/document_update_reason.h
@@ -20,6 +20,7 @@
   kBaseColor,
   kBeginMainFrame,
   kCanvas,
+  kComputedStyle,
   kContextMenu,
   kDisplayLock,
   kViewTransition,
@@ -37,15 +38,18 @@
   kOverlay,
   kPagePopup,
   kPlugin,
+  kPopover,
   kPrinting,
   kScroll,
   kSelection,
   kSizeChange,
   kSpatialNavigation,
   kSpellCheck,
+  kSMILAnimation,
   kSVGImage,
   kTapHighlight,
   kTest,
+  kWebAnimation,
   kUnknown
 };
 
diff --git a/third_party/blink/public/common/permissions_policy/permissions_policy.h b/third_party/blink/public/common/permissions_policy/permissions_policy.h
index 3e938b7..6e7f24c 100644
--- a/third_party/blink/public/common/permissions_policy/permissions_policy.h
+++ b/third_party/blink/public/common/permissions_policy/permissions_policy.h
@@ -180,7 +180,7 @@
   static std::unique_ptr<PermissionsPolicy> CreateForFencedFrame(
       const url::Origin& origin,
       base::span<const blink::mojom::PermissionsPolicyFeature>
-          required_permissions_to_load);
+          effective_enabled_permissions);
 
   static std::unique_ptr<PermissionsPolicy> CreateFromParsedPolicy(
       const ParsedPermissionsPolicy& parsed_policy,
@@ -274,7 +274,7 @@
       const url::Origin& origin,
       const PermissionsPolicyFeatureList& features,
       base::span<const blink::mojom::PermissionsPolicyFeature>
-          required_permissions_to_load);
+          effective_enabled_permissions);
 
   // Returns whether or not the given feature is enabled by this policy for a
   // specific origin given a set of opt-in features. The opt-in features cannot
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index 72e14c2..621e24f 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -5121,6 +5121,8 @@
       experimental number pushStart
       # Time the server finished pushing request.
       experimental number pushEnd
+      # Started receiving response headers.
+      experimental number receiveHeadersStart
       # Finished receiving response headers.
       number receiveHeadersEnd
 
diff --git a/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom b/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom
index 031b323..9c3475db 100644
--- a/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom
+++ b/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom
@@ -147,7 +147,7 @@
   // on a fenced frame, it can be used as a fingerprinting channel. Instead,
   // each API sets a list of feature permissions that a fenced frame needs to
   // enable to be allowed to load.
-  array<PermissionsPolicyFeature> required_permissions_to_load;
+  array<PermissionsPolicyFeature> effective_enabled_permissions;
 };
 
 // The `FencedFrameProperties` struct is used to transfer a redacted version
@@ -188,5 +188,5 @@
 
   DeprecatedFencedFrameMode mode;
 
-  array<PermissionsPolicyFeature> required_permissions_to_load;
+  array<PermissionsPolicyFeature> effective_enabled_permissions;
 };
diff --git a/third_party/blink/public/mojom/indexeddb/indexeddb.mojom b/third_party/blink/public/mojom/indexeddb/indexeddb.mojom
index 48417332..b18251d 100644
--- a/third_party/blink/public/mojom/indexeddb/indexeddb.mojom
+++ b/third_party/blink/public/mojom/indexeddb/indexeddb.mojom
@@ -425,9 +425,10 @@
   GetKeyGeneratorCurrentNumber(int64 transaction_id,
                                int64 object_store_id,
                                pending_associated_remote<IDBCallbacks> pending_callbacks);
+  // Correlates to IDBObjectStore::clear()
   Clear(int64 transaction_id,
-        int64 object_store_id,
-        pending_associated_remote<IDBCallbacks> pending_callbacks);
+        int64 object_store_id) => (bool success);
+  // Correlates to IDBObjectStore::createIndex()
   CreateIndex(int64 transaction_id,
               int64 object_store_id,
               int64 index_id,
diff --git a/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom b/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom
index c0977d8e..c70cea8 100644
--- a/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom
+++ b/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom
@@ -7,6 +7,7 @@
 import "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom";
 import "third_party/blink/public/mojom/parakeet/ad_request.mojom";
 import "third_party/blink/public/mojom/interest_group/interest_group_types.mojom";
+import "mojo/public/mojom/base/big_buffer.mojom";
 import "mojo/public/mojom/base/time.mojom";
 import "url/mojom/origin.mojom";
 import "url/mojom/url.mojom";
@@ -203,4 +204,9 @@
   // showing FLEDGE ads in iframes.
   DeprecatedReplaceInURN(url.mojom.Url uuid_url,
                          array<AdKeywordReplacement> replacements) => ();
+
+  // Gets the ad auction data for running an external auction on a bidding and
+  // auction server.
+  GetInterestGroupAdAuctionData(url.mojom.Origin seller)
+      => (mojo_base.mojom.BigBuffer data);
 };
diff --git a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
index ec2d78e..945924c 100644
--- a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
+++ b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
@@ -3913,6 +3913,7 @@
   kV8InvalidatedNumberStringNotRegexpLikeProtector = 4573,
   kCriticalCHRestartNavigationTiming = 4574,
   kTopLevelDocumentWithEmbeddedCredentials = 4575,
+  kV8Navigator_GetInterestGroupAdAuctionData_Method = 4576,
 
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni
index acd52112..d0a440d 100644
--- a/third_party/blink/renderer/bindings/generated_in_modules.gni
+++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -107,6 +107,8 @@
 generated_dictionary_sources_in_modules = [
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_aac_encoder_config.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_aac_encoder_config.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_ad_auction_data_config.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_ad_auction_data_config.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_ad_properties.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_ad_properties.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_ad_request_config.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
index 1cdd557..43f623b 100644
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -8,6 +8,7 @@
 # for production.
 static_idl_files_in_modules = get_path_info(
         [
+          "//third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl",
           "//third_party/blink/renderer/modules/ad_auction/ad_request_config.idl",
           "//third_party/blink/renderer/modules/ad_auction/ads.idl",
           "//third_party/blink/renderer/modules/ad_auction/auction_ad.idl",
diff --git a/third_party/blink/renderer/core/animation/animatable.cc b/third_party/blink/renderer/core/animation/animatable.cc
index c686adc..f65f30f 100644
--- a/third_party/blink/renderer/core/animation/animatable.cc
+++ b/third_party/blink/renderer/core/animation/animatable.cc
@@ -165,10 +165,13 @@
 HeapVector<Member<Animation>> Animatable::GetAnimationsInternal(
     GetAnimationsOptionsResolved options) {
   Element* element = GetAnimationTarget();
-  if (options.use_subtree)
-    element->GetDocument().UpdateStyleAndLayoutTreeForSubtree(element);
-  else
-    element->GetDocument().UpdateStyleAndLayoutTreeForNode(element);
+  if (options.use_subtree) {
+    element->GetDocument().UpdateStyleAndLayoutTreeForSubtree(
+        element, DocumentUpdateReason::kWebAnimation);
+  } else {
+    element->GetDocument().UpdateStyleAndLayoutTreeForNode(
+        element, DocumentUpdateReason::kWebAnimation);
+  }
 
   HeapVector<Member<Animation>> animations;
   if (!options.use_subtree && !element->HasAnimations())
diff --git a/third_party/blink/renderer/core/animation/keyframe_effect.cc b/third_party/blink/renderer/core/animation/keyframe_effect.cc
index d4e70ff..7bb51a2 100644
--- a/third_party/blink/renderer/core/animation/keyframe_effect.cc
+++ b/third_party/blink/renderer/core/animation/keyframe_effect.cc
@@ -171,7 +171,8 @@
   if (!pseudo.empty()) {
     effect->target_pseudo_ = pseudo;
     if (element) {
-      element->GetDocument().UpdateStyleAndLayoutTreeForNode(element);
+      element->GetDocument().UpdateStyleAndLayoutTreeForNode(
+          element, DocumentUpdateReason::kWebAnimation);
       PseudoId pseudo_id =
           CSSSelectorParser::ParsePseudoElement(pseudo, element);
       AtomicString pseudo_argument =
@@ -268,7 +269,7 @@
     new_target = target_element_;
   } else {
     target_element_->GetDocument().UpdateStyleAndLayoutTreeForNode(
-        target_element_);
+        target_element_, DocumentUpdateReason::kWebAnimation);
     PseudoId pseudoId =
         CSSSelectorParser::ParsePseudoElement(target_pseudo_, target_element_);
     new_target = target_element_->GetPseudoElement(pseudoId);
diff --git a/third_party/blink/renderer/core/css/css_computed_style_declaration.cc b/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
index fb75147..fdda739 100644
--- a/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
+++ b/third_party/blink/renderer/core/css/css_computed_style_declaration.cc
@@ -279,7 +279,7 @@
         CSSProperty::Get(property_name->Id()).IsLayoutDependentProperty();
     if (is_for_layout_dependent_property) {
       owner->GetDocument().UpdateStyleAndLayout(
-          DocumentUpdateReason::kJavaScript);
+          DocumentUpdateReason::kComputedStyle);
       // The style recalc could have caused the styled node to be discarded or
       // replaced if it was a PseudoElement so we need to update it.
       styled_node = StyledNode();
@@ -292,12 +292,14 @@
   // property set by the UA stylesheet is queried.
   if (IsTransitionPseudoElement(styled_node->GetPseudoId())) {
     if (auto* view = document.View()) {
-      view->UpdateLifecycleToPrePaintClean(DocumentUpdateReason::kJavaScript);
+      view->UpdateLifecycleToPrePaintClean(
+          DocumentUpdateReason::kComputedStyle);
     }
     return;
   }
 
-  document.UpdateStyleAndLayoutTreeForNode(styled_node);
+  document.UpdateStyleAndLayoutTreeForNode(
+      styled_node, DocumentUpdateReason::kComputedStyle);
 }
 
 void CSSComputedStyleDeclaration::UpdateStyleAndLayoutIfNeeded(
diff --git a/third_party/blink/renderer/core/css/css_property_value_set_test.cc b/third_party/blink/renderer/core/css/css_property_value_set_test.cc
index 6ba42458..91f5744 100644
--- a/third_party/blink/renderer/core/css/css_property_value_set_test.cc
+++ b/third_party/blink/renderer/core/css/css_property_value_set_test.cc
@@ -84,8 +84,8 @@
   StyleRule* rule = RuleAt(style_sheet, 0);
 
   EXPECT_EQ(
-      "offset-position: auto; offset-distance: 0px; "
-      "offset-rotate: reverse 2turn; offset-anchor: auto; "
+      "offset-position: initial; offset-distance: initial; "
+      "offset-rotate: reverse 2turn; offset-anchor: initial; "
       "offset-path: initial;",
       rule->Properties().AsText());
 }
diff --git a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
index cd0f74ce..ee4ae7e 100644
--- a/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
+++ b/third_party/blink/renderer/core/css/cssom/computed_style_property_map.cc
@@ -69,7 +69,8 @@
   // Update style before getting the value for the property
   // This could cause the element to be blown away. This code is copied from
   // CSSComputedStyleDeclaration::GetPropertyCSSValue.
-  element->GetDocument().UpdateStyleAndLayoutTreeForNode(element);
+  element->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      element, DocumentUpdateReason::kComputedStyle);
   element = StyledElement();
   if (!element) {
     return nullptr;
diff --git a/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc b/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc
index b8376d7..8df8193 100644
--- a/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc
+++ b/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc
@@ -2655,7 +2655,7 @@
   } else if (RuntimeEnabledFeatures::CSSOffsetPositionAnchorEnabled()) {
     css_parsing_utils::AddProperty(
         CSSPropertyID::kOffsetPosition, CSSPropertyID::kOffset,
-        *CSSIdentifierValue::Create(CSSValueID::kAuto), important,
+        *CSSInitialValue::Create(), important,
         css_parsing_utils::IsImplicitProperty::kNotImplicit, properties);
   }
 
@@ -2667,7 +2667,7 @@
   } else {
     css_parsing_utils::AddProperty(
         CSSPropertyID::kOffsetPath, CSSPropertyID::kOffset,
-        *CSSIdentifierValue::Create(CSSValueID::kNone), important,
+        *CSSInitialValue::Create(), important,
         css_parsing_utils::IsImplicitProperty::kNotImplicit, properties);
   }
 
@@ -2679,10 +2679,8 @@
   } else {
     css_parsing_utils::AddProperty(
         CSSPropertyID::kOffsetDistance, CSSPropertyID::kOffset,
-        *CSSNumericLiteralValue::Create(0,
-                                        CSSPrimitiveValue::UnitType::kPixels),
-        important, css_parsing_utils::IsImplicitProperty::kNotImplicit,
-        properties);
+        *CSSInitialValue::Create(), important,
+        css_parsing_utils::IsImplicitProperty::kNotImplicit, properties);
   }
 
   if (offset_rotate) {
@@ -2693,7 +2691,7 @@
   } else {
     css_parsing_utils::AddProperty(
         CSSPropertyID::kOffsetRotate, CSSPropertyID::kOffset,
-        *CSSIdentifierValue::Create(CSSValueID::kAuto), important,
+        *CSSInitialValue::Create(), important,
         css_parsing_utils::IsImplicitProperty::kNotImplicit, properties);
   }
 
@@ -2705,7 +2703,7 @@
   } else if (RuntimeEnabledFeatures::CSSOffsetPositionAnchorEnabled()) {
     css_parsing_utils::AddProperty(
         CSSPropertyID::kOffsetAnchor, CSSPropertyID::kOffset,
-        *CSSIdentifierValue::Create(CSSValueID::kAuto), important,
+        *CSSInitialValue::Create(), important,
         css_parsing_utils::IsImplicitProperty::kNotImplicit, properties);
   }
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
index a208420..e523a71 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
@@ -1837,12 +1837,6 @@
     const CSSValue& value) {
   StyleOffsetRotation result(0, OffsetRotationType::kFixed);
 
-  if (auto* identifier = DynamicTo<CSSIdentifierValue>(value)) {
-    DCHECK_EQ(identifier->GetValueID(), CSSValueID::kAuto);
-    result.type = OffsetRotationType::kAuto;
-    return result;
-  }
-
   const auto& list = To<CSSValueList>(value);
   DCHECK(list.length() == 1 || list.length() == 2);
   for (const auto& item : list) {
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc
index 8aa7b184..0b4e0cd 100644
--- a/third_party/blink/renderer/core/css/style_engine_test.cc
+++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -3992,7 +3992,7 @@
   //
   // See implementation of `NodeLayoutUpgrade::ShouldUpgrade` for more
   // information.
-  GetDocument().UpdateStyleAndLayoutTreeForNode(a);
+  GetDocument().UpdateStyleAndLayoutTreeForNode(a, DocumentUpdateReason::kTest);
   EXPECT_FALSE(GetStyleEngine().StyleAffectedByLayout());
   EXPECT_FALSE(GetDocument().View()->NeedsLayout());
   EXPECT_FALSE(GetDocument().NeedsLayoutTreeUpdateForNode(*a));
diff --git a/third_party/blink/renderer/core/css/style_property_serializer.cc b/third_party/blink/renderer/core/css/style_property_serializer.cc
index 61c925ce..f55ec95 100644
--- a/third_party/blink/renderer/core/css/style_property_serializer.cc
+++ b/third_party/blink/renderer/core/css/style_property_serializer.cc
@@ -396,6 +396,7 @@
     case CSSPropertyID::kGridArea:
     case CSSPropertyID::kGap:
     case CSSPropertyID::kListStyle:
+    case CSSPropertyID::kOffset:
     case CSSPropertyID::kTextDecoration:
     case CSSPropertyID::kTextEmphasis:
     case CSSPropertyID::kWebkitMask:
@@ -1360,72 +1361,44 @@
 }
 
 String StylePropertySerializer::OffsetValue() const {
-  const CSSValue* position =
-      property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetPosition());
+  StringBuilder result;
+  if (RuntimeEnabledFeatures::CSSOffsetPositionAnchorEnabled()) {
+    const CSSValue* position =
+        property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetPosition());
+    if (!position->IsInitialValue()) {
+      result.Append(position->CssText());
+    }
+  }
   const CSSValue* path =
       property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetPath());
   const CSSValue* distance =
       property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetDistance());
   const CSSValue* rotate =
       property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetRotate());
-  const CSSValue* anchor =
-      property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetAnchor());
-
-  auto is_initial_identifier_value = [](const CSSValue* value, CSSValueID id) {
-    return value->IsIdentifierValue() &&
-           DynamicTo<CSSIdentifierValue>(value)->GetValueID() == id;
-  };
-
-  bool use_distance =
-      !(distance->IsNumericLiteralValue() &&
-        To<CSSNumericLiteralValue>(*distance).DoubleValue() == 0.0);
-  const auto* rotate_list_value = DynamicTo<CSSValueList>(rotate);
-  bool is_rotate_auto = rotate_list_value && rotate_list_value->length() == 1 &&
-                        is_initial_identifier_value(&rotate_list_value->First(),
-                                                    CSSValueID::kAuto);
-  bool is_rotate_zero =
-      rotate_list_value && rotate_list_value->length() == 1 &&
-      rotate_list_value->First().IsNumericLiteralValue() &&
-      (To<CSSNumericLiteralValue>(rotate_list_value->First()).DoubleValue() ==
-       0.0);
-  bool is_rotate_auto_zero =
-      rotate_list_value && rotate_list_value->length() == 2 &&
-      rotate_list_value->Item(1).IsNumericLiteralValue() &&
-      (To<CSSNumericLiteralValue>(rotate_list_value->Item(1)).DoubleValue() ==
-       0.0) &&
-      is_initial_identifier_value(&rotate_list_value->Item(0),
-                                  CSSValueID::kAuto);
-  bool use_rotate = (use_distance && is_rotate_zero) ||
-                    (!is_initial_identifier_value(rotate, CSSValueID::kAuto) &&
-                     !is_rotate_auto && !is_rotate_auto_zero);
-  bool use_path = use_rotate || use_distance ||
-                  !is_initial_identifier_value(path, CSSValueID::kNone);
-  bool use_position =
-      !use_path || !is_initial_identifier_value(position, CSSValueID::kAuto);
-  bool use_anchor = !is_initial_identifier_value(anchor, CSSValueID::kAuto);
-
-  StringBuilder result;
-  if (RuntimeEnabledFeatures::CSSOffsetPositionAnchorEnabled()) {
-    if (use_position) {
-      result.Append(position->CssText());
-    }
-  }
-  if (use_path) {
+  if (!path->IsInitialValue()) {
     if (!result.empty()) {
       result.Append(" ");
     }
     result.Append(path->CssText());
-  }
-  if (use_distance) {
-    result.Append(" ");
-    result.Append(distance->CssText());
-  }
-  if (use_rotate) {
-    result.Append(" ");
-    result.Append(rotate->CssText());
+    if (!distance->IsInitialValue()) {
+      result.Append(" ");
+      result.Append(distance->CssText());
+    }
+    if (!rotate->IsInitialValue()) {
+      result.Append(" ");
+      result.Append(rotate->CssText());
+    }
+  } else {
+    // The longhand values cannot be serialized as a valid shorthand value.
+    // Serialize them as individual longhands instead.
+    if (!distance->IsInitialValue() || !rotate->IsInitialValue()) {
+      return String();
+    }
   }
   if (RuntimeEnabledFeatures::CSSOffsetPositionAnchorEnabled()) {
-    if (use_anchor) {
+    const CSSValue* anchor =
+        property_set_.GetPropertyCSSValue(GetCSSPropertyOffsetAnchor());
+    if (!anchor->IsInitialValue()) {
       result.Append(" / ");
       result.Append(anchor->CssText());
     }
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_utilities.h b/third_party/blink/renderer/core/display_lock/display_lock_utilities.h
index cfde6cc..fa09d68c 100644
--- a/third_party/blink/renderer/core/display_lock/display_lock_utilities.h
+++ b/third_party/blink/renderer/core/display_lock/display_lock_utilities.h
@@ -53,8 +53,12 @@
     friend void Document::UpdateStyleAndLayoutForRange(
         const Range* range,
         DocumentUpdateReason reason);
-    friend void Document::UpdateStyleAndLayoutTreeForNode(const Node*);
-    friend void Document::UpdateStyleAndLayoutTreeForSubtree(const Node* node);
+    friend void Document::UpdateStyleAndLayoutTreeForNode(
+        const Node* node,
+        DocumentUpdateReason reason);
+    friend void Document::UpdateStyleAndLayoutTreeForSubtree(
+        const Node* node,
+        DocumentUpdateReason reason);
     friend void Document::EnsurePaintLocationDataValidForNode(
         const Node* node,
         DocumentUpdateReason reason);
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index a0a841f..4653481 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -2382,7 +2382,8 @@
   }
 }
 
-void Document::UpdateStyleAndLayoutTreeForNode(const Node* node) {
+void Document::UpdateStyleAndLayoutTreeForNode(const Node* node,
+                                               DocumentUpdateReason) {
   DCHECK(node);
   if (!node->InActiveDocument()) {
     // If |node| is not in the active document, we can't update its style or
@@ -2401,7 +2402,8 @@
   UpdateStyleAndLayoutTree(upgrade);
 }
 
-void Document::UpdateStyleAndLayoutTreeForSubtree(const Node* node) {
+void Document::UpdateStyleAndLayoutTreeForSubtree(const Node* node,
+                                                  DocumentUpdateReason) {
   DCHECK(node);
   if (!node->InActiveDocument()) {
     DCHECK_EQ(node->ownerDocument(), this);
@@ -5119,8 +5121,11 @@
   if (new_focused_element && new_focused_element->GetDocument() != this)
     return true;
 
-  if (new_focused_element)
-    UpdateStyleAndLayoutTreeForNode(new_focused_element);
+  if (new_focused_element) {
+    UpdateStyleAndLayoutTreeForNode(new_focused_element,
+                                    DocumentUpdateReason::kFocus);
+  }
+
   if (new_focused_element && new_focused_element->IsFocusable()) {
     if (IsRootEditableElement(*new_focused_element) &&
         !AcceptsEditingFocus(*new_focused_element)) {
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index 971daa6..788f961 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -724,8 +724,8 @@
   // does its own ancestor tree walk).
   void UpdateStyleAndLayoutTreeForThisDocument();
 
-  void UpdateStyleAndLayoutTreeForNode(const Node*);
-  void UpdateStyleAndLayoutTreeForSubtree(const Node*);
+  void UpdateStyleAndLayoutTreeForNode(const Node*, DocumentUpdateReason);
+  void UpdateStyleAndLayoutTreeForSubtree(const Node*, DocumentUpdateReason);
 
   void UpdateStyleAndLayout(DocumentUpdateReason);
   void LayoutUpdated();
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index df5f6f5..51ae5ad 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -2397,7 +2397,8 @@
     //
     // TODO(tkent): We should avoid updating style.  We'd like to check only
     // DOM-level focusability here.
-    GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+    GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                  DocumentUpdateReason::kFocus);
     if (!SupportsFocus() && !GetFocusableArea()) {
       blur();
     }
@@ -5127,7 +5128,8 @@
       params.gate_on_user_activation);
 
   // Ensure we have clean style (including forced display locks).
-  GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+  GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                DocumentUpdateReason::kFocus);
 
   // https://html.spec.whatwg.org/C/#focusing-steps
   //
@@ -5386,7 +5388,8 @@
           *this, DisplayLockActivationReason::kUserFocus)) {
     return false;
   }
-  GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+  GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                DocumentUpdateReason::kFocus);
   return IsFocusableStyle();
 }
 
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc
index 6bf9881..a22baa0 100644
--- a/third_party/blink/renderer/core/dom/node.cc
+++ b/third_party/blink/renderer/core/dom/node.cc
@@ -1657,8 +1657,10 @@
 // FIXME: Shouldn't these functions be in the editing code?  Code that asks
 // questions about HTML in the core DOM class is obviously misplaced.
 bool Node::CanStartSelection() const {
-  if (DisplayLockUtilities::LockedAncestorPreventingPaint(*this))
-    GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+  if (DisplayLockUtilities::LockedAncestorPreventingPaint(*this)) {
+    GetDocument().UpdateStyleAndLayoutTreeForNode(
+        this, DocumentUpdateReason::kSelection);
+  }
   if (IsEditable(*this))
     return true;
 
diff --git a/third_party/blink/renderer/core/editing/frame_caret.cc b/third_party/blink/renderer/core/editing/frame_caret.cc
index 919dff9..5a7083f 100644
--- a/third_party/blink/renderer/core/editing/frame_caret.cc
+++ b/third_party/blink/renderer/core/editing/frame_caret.cc
@@ -243,11 +243,14 @@
   display_item_client_->PaintCaret(context, paint_offset, DisplayItem::kCaret);
 
   if (!frame_->Selection().IsHidden()) {
-    display_item_client_->RecordSelection(
-        context, paint_offset,
-        frame_->Selection().IsHandleVisible()
-            ? gfx::SelectionBound::Type::CENTER
-            : gfx::SelectionBound::Type::HIDDEN);
+    auto type = frame_->Selection().IsHandleVisible()
+                    ? gfx::SelectionBound::Type::CENTER
+                    : gfx::SelectionBound::Type::HIDDEN;
+
+    if (type == gfx::SelectionBound::Type::CENTER ||
+        base::FeatureList::IsEnabled(blink::features::kHiddenSelectionBounds)) {
+      display_item_client_->RecordSelection(context, paint_offset, type);
+    }
   }
 }
 
diff --git a/third_party/blink/renderer/core/editing/frame_selection_test.cc b/third_party/blink/renderer/core/editing/frame_selection_test.cc
index 53b1a8d..5bdb289c 100644
--- a/third_party/blink/renderer/core/editing/frame_selection_test.cc
+++ b/third_party/blink/renderer/core/editing/frame_selection_test.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 #include "base/memory/scoped_refptr.h"
+#include "base/test/scoped_feature_list.h"
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/web/web_range.h"
@@ -1426,8 +1427,11 @@
   }
 }
 
-TEST_F(FrameSelectionTest,
-       PaintCaretRecordsSelectionWhenCursorUpdatesRequested) {
+TEST_F(FrameSelectionTest, PaintCaretRecordsSelectionWithNoSelectionHandles) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kHiddenSelectionBounds);
+
   Text* text = AppendTextNode("Hello, World!");
   UpdateAllLifecyclePhasesForTest();
 
diff --git a/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc b/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc
index c61d1ae..b681479 100644
--- a/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc
+++ b/third_party/blink/renderer/core/editing/spellcheck/spell_checker.cc
@@ -391,8 +391,10 @@
                                                    ElementsType elements_type) {
   // TODO(editing-dev): The use of updateStyleAndLayoutIgnorePendingStylesheets
   // needs to be audited.  See http://crbug.com/590369 for more details.
-  if (elements_type == ElementsType::kOnlyNonEditable)
-    GetFrame().GetDocument()->UpdateStyleAndLayoutTreeForNode(&element);
+  if (elements_type == ElementsType::kOnlyNonEditable) {
+    GetFrame().GetDocument()->UpdateStyleAndLayoutTreeForNode(
+        &element, DocumentUpdateReason::kSpellCheck);
+  }
 
   for (Node& node : NodeTraversal::InclusiveDescendantsOf(element)) {
     auto* text_node = DynamicTo<Text>(node);
diff --git a/third_party/blink/renderer/core/execution_context/security_context_init.cc b/third_party/blink/renderer/core/execution_context/security_context_init.cc
index 3b01050..b972a4c 100644
--- a/third_party/blink/renderer/core/execution_context/security_context_init.cc
+++ b/third_party/blink/renderer/core/execution_context/security_context_init.cc
@@ -108,7 +108,7 @@
     const FramePolicy& frame_policy,
     const absl::optional<ParsedPermissionsPolicy>& isolated_app_policy,
     const base::span<const mojom::blink::PermissionsPolicyFeature>
-        required_permissions_to_load) {
+        effective_enabled_permissions) {
   const url::Origin origin =
       execution_context_->GetSecurityOrigin()->ToUrlOrigin();
   // If we are a HTMLViewSourceDocument we use container, header or
@@ -209,7 +209,7 @@
       // the required policies, which is checked separately in
       // NavigationRequest::CheckPermissionsPoliciesForFencedFrames.
       permissions_policy = PermissionsPolicy::CreateForFencedFrame(
-          origin, required_permissions_to_load);
+          origin, effective_enabled_permissions);
     } else {
       auto* parent_permissions_policy = frame.Tree().Parent()
                                             ? frame.Tree()
diff --git a/third_party/blink/renderer/core/execution_context/security_context_init.h b/third_party/blink/renderer/core/execution_context/security_context_init.h
index 49b0516..f6cf8e6b 100644
--- a/third_party/blink/renderer/core/execution_context/security_context_init.h
+++ b/third_party/blink/renderer/core/execution_context/security_context_init.h
@@ -46,7 +46,7 @@
       const FramePolicy& frame_policy,
       const absl::optional<ParsedPermissionsPolicy>& isolated_app_policy,
       const base::span<const mojom::blink::PermissionsPolicyFeature>
-          required_permissions_to_load);
+          effective_enabled_permissions);
   void ApplyDocumentPolicy(
       DocumentPolicy::ParsedDocumentPolicy& document_policy,
       const String& report_only_document_policy_header);
diff --git a/third_party/blink/renderer/core/exported/web_node.cc b/third_party/blink/renderer/core/exported/web_node.cc
index 21698fb4..ad71cb8c5 100644
--- a/third_party/blink/renderer/core/exported/web_node.cc
+++ b/third_party/blink/renderer/core/exported/web_node.cc
@@ -140,7 +140,8 @@
     return false;
   if (!private_->GetDocument().HaveRenderBlockingResourcesLoaded())
     return false;
-  private_->GetDocument().UpdateStyleAndLayoutTreeForNode(private_.Get());
+  private_->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      private_.Get(), DocumentUpdateReason::kFocus);
   return element->IsFocusable();
 }
 
diff --git a/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc b/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
index 00230ba0..c124404 100644
--- a/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_ukm_aggregator.cc
@@ -386,13 +386,17 @@
 
     case DocumentUpdateReason::kAccessibility:
     case DocumentUpdateReason::kBaseColor:
+    case DocumentUpdateReason::kComputedStyle:
     case DocumentUpdateReason::kDisplayLock:
     case DocumentUpdateReason::kViewTransition:
     case DocumentUpdateReason::kIntersectionObservation:
     case DocumentUpdateReason::kOverlay:
     case DocumentUpdateReason::kPagePopup:
+    case DocumentUpdateReason::kPopover:
     case DocumentUpdateReason::kSizeChange:
     case DocumentUpdateReason::kSpellCheck:
+    case DocumentUpdateReason::kSMILAnimation:
+    case DocumentUpdateReason::kWebAnimation:
       sub_metric = kServiceDocumentUpdate;
       break;
 
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 88db9fb..037cff8 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -1938,7 +1938,8 @@
   // TODO(junov): Computing style here will be problematic for applying the
   // NoAllocDirectCall IDL attribute to drawImage.
   if (!GetComputedStyle()) {
-    GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+    GetDocument().UpdateStyleAndLayoutTreeForNode(
+        this, DocumentUpdateReason::kCanvas);
     const_cast<HTMLCanvasElement*>(this)->EnsureComputedStyle();
   }
   return LayoutObject::ShouldRespectImageOrientation(GetLayoutObject());
diff --git a/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc b/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
index 6b680dca..15442d8e 100644
--- a/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
+++ b/third_party/blink/renderer/core/html/forms/date_time_edit_element.cc
@@ -649,7 +649,8 @@
     DateTimeFieldElement* old_focused_field =
         static_cast<DateTimeFieldElement*>(old_focused_element);
     wtf_size_t index = FieldIndexOf(*old_focused_field);
-    GetDocument().UpdateStyleAndLayoutTreeForNode(old_focused_field);
+    GetDocument().UpdateStyleAndLayoutTreeForNode(old_focused_field,
+                                                  DocumentUpdateReason::kFocus);
     if (index != kInvalidFieldIndex && old_focused_field->IsFocusable()) {
       old_focused_field->Focus();
       return;
diff --git a/third_party/blink/renderer/core/html/forms/html_form_control_element.cc b/third_party/blink/renderer/core/html/forms/html_form_control_element.cc
index c3acee5..cfffcf97 100644
--- a/third_party/blink/renderer/core/html/forms/html_form_control_element.cc
+++ b/third_party/blink/renderer/core/html/forms/html_form_control_element.cc
@@ -42,6 +42,7 @@
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/html/parser/html_parser_idioms.h"
 #include "third_party/blink/renderer/core/html_names.h"
+#include "third_party/blink/renderer/core/keywords.h"
 #include "third_party/blink/renderer/core/layout/layout_object.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
@@ -371,16 +372,16 @@
       FastGetAttribute(html_names::kPopovertargetactionAttr).LowerASCII();
   // ReflectEmpty="toggle", ReflectMissing="toggle"
   if (attribute_value.IsNull() || attribute_value.empty()) {
-    return kPopoverTargetActionToggle;
-  } else if (attribute_value == kPopoverTargetActionToggle ||
-             attribute_value == kPopoverTargetActionShow ||
-             attribute_value == kPopoverTargetActionHide) {
+    return keywords::kToggle;
+  } else if (attribute_value == keywords::kToggle ||
+             attribute_value == keywords::kShow ||
+             attribute_value == keywords::kHide) {
     return attribute_value;  // ReflectOnly
   } else if (RuntimeEnabledFeatures::HTMLPopoverHintEnabled() &&
-             attribute_value == kPopoverTargetActionHover) {
+             attribute_value == keywords::kHover) {
     return attribute_value;  // ReflectOnly (with HTMLPopoverHint enabled)
   } else {
-    return kPopoverTargetActionToggle;  // ReflectInvalid = "toggle"
+    return keywords::kToggle;  // ReflectInvalid = "toggle"
   }
 }
 void HTMLFormControlElement::setPopoverTargetAction(const AtomicString& value) {
diff --git a/third_party/blink/renderer/core/html/forms/html_form_control_element.h b/third_party/blink/renderer/core/html/forms/html_form_control_element.h
index ce3c5c6..659b834 100644
--- a/third_party/blink/renderer/core/html/forms/html_form_control_element.h
+++ b/third_party/blink/renderer/core/html/forms/html_form_control_element.h
@@ -38,11 +38,6 @@
 
 class HTMLFormElement;
 
-constexpr const char* kPopoverTargetActionToggle = "toggle";
-constexpr const char* kPopoverTargetActionShow = "show";
-constexpr const char* kPopoverTargetActionHide = "hide";
-constexpr const char* kPopoverTargetActionHover = "hover";
-
 // HTMLFormControlElement is the default implementation of
 // ListedElement, and listed element implementations should use
 // HTMLFormControlElement unless there is a special reason.
diff --git a/third_party/blink/renderer/core/html/forms/html_label_element.cc b/third_party/blink/renderer/core/html/forms/html_label_element.cc
index df28b53..925f2710 100644
--- a/third_party/blink/renderer/core/html/forms/html_label_element.cc
+++ b/third_party/blink/renderer/core/html/forms/html_label_element.cc
@@ -236,7 +236,8 @@
 }
 
 void HTMLLabelElement::Focus(const FocusParams& params) {
-  GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+  GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                DocumentUpdateReason::kFocus);
   if (IsFocusable()) {
     HTMLElement::Focus(params);
     return;
diff --git a/third_party/blink/renderer/core/html/forms/html_select_menu_element.cc b/third_party/blink/renderer/core/html/forms/html_select_menu_element.cc
index fc3470f..0769a9a 100644
--- a/third_party/blink/renderer/core/html/forms/html_select_menu_element.cc
+++ b/third_party/blink/renderer/core/html/forms/html_select_menu_element.cc
@@ -23,6 +23,7 @@
 #include "third_party/blink/renderer/core/html/html_slot_element.h"
 #include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
+#include "third_party/blink/renderer/core/keywords.h"
 #include "third_party/blink/renderer/core/page/chrome_client.h"
 #include "third_party/blink/renderer/core/page/page.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
@@ -277,7 +278,7 @@
 
   HTMLElement* new_popover;
   new_popover = MakeGarbageCollected<HTMLDivElement>(document);
-  new_popover->setAttribute(html_names::kPopoverAttr, kPopoverTypeValueAuto);
+  new_popover->setAttribute(html_names::kPopoverAttr, keywords::kAuto);
   new_popover->setAttribute(html_names::kPartAttr, kListboxPartName);
   new_popover->setAttribute(html_names::kBehaviorAttr, kListboxPartName);
   new_popover->SetShadowPseudoId(AtomicString("-internal-selectmenu-listbox"));
diff --git a/third_party/blink/renderer/core/html/html_area_element.cc b/third_party/blink/renderer/core/html/html_area_element.cc
index 876e0487..24e266d 100644
--- a/third_party/blink/renderer/core/html/html_area_element.cc
+++ b/third_party/blink/renderer/core/html/html_area_element.cc
@@ -222,7 +222,8 @@
 void HTMLAreaElement::UpdateSelectionOnFocus(
     SelectionBehaviorOnFocus selection_behavior,
     const FocusOptions* options) {
-  GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+  GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                DocumentUpdateReason::kFocus);
   if (!IsFocusable())
     return;
 
diff --git a/third_party/blink/renderer/core/html/html_element.cc b/third_party/blink/renderer/core/html/html_element.cc
index 5b20c84..0151ed3 100644
--- a/third_party/blink/renderer/core/html/html_element.cc
+++ b/third_party/blink/renderer/core/html/html_element.cc
@@ -91,6 +91,7 @@
 #include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
+#include "third_party/blink/renderer/core/keywords.h"
 #include "third_party/blink/renderer/core/layout/adjust_for_absolute_zoom.h"
 #include "third_party/blink/renderer/core/layout/layout_box.h"
 #include "third_party/blink/renderer/core/layout/layout_box_model_object.h"
@@ -824,7 +825,8 @@
     //
     // TODO(tkent): We should avoid updating style.  We'd like to check only
     // DOM-level focusability here.
-    GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+    GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                  DocumentUpdateReason::kFocus);
     if (!SupportsFocus())
       blur();
   }
@@ -1172,14 +1174,15 @@
 }
 
 namespace {
-PopoverValueType GetPopoverTypeFromAttributeValue(String value) {
-  if (EqualIgnoringASCIICase(value, kPopoverTypeValueAuto) ||
-      (!value.IsNull() && value.empty())) {
+
+PopoverValueType GetPopoverTypeFromAttributeValue(const AtomicString& value) {
+  AtomicString lower_value = value.LowerASCII();
+  if (lower_value == keywords::kAuto || (!value.IsNull() && value.empty())) {
     return PopoverValueType::kAuto;
-  } else if (EqualIgnoringASCIICase(value, kPopoverTypeValueHint) &&
+  } else if (lower_value == keywords::kHint &&
              RuntimeEnabledFeatures::HTMLPopoverHintEnabled()) {
     return PopoverValueType::kHint;
-  } else if (EqualIgnoringASCIICase(value, kPopoverTypeValueManual)) {
+  } else if (lower_value == keywords::kManual) {
     return PopoverValueType::kManual;
   } else if (!value.IsNull()) {
     // Invalid values default to popover=manual.
@@ -1189,7 +1192,7 @@
 }
 }  // namespace
 
-void HTMLElement::UpdatePopoverAttribute(String value) {
+void HTMLElement::UpdatePopoverAttribute(const AtomicString& value) {
   if (!RuntimeEnabledFeatures::HTMLPopoverAttributeEnabled(
           GetDocument().GetExecutionContext())) {
     // If the feature flag isn't enabled, give a console warning about this
@@ -1214,7 +1217,7 @@
 
   PopoverValueType type = GetPopoverTypeFromAttributeValue(value);
   if (type == PopoverValueType::kManual &&
-      !EqualIgnoringASCIICase(value, kPopoverTypeValueManual)) {
+      !EqualIgnoringASCIICase(value, keywords::kManual)) {
     GetDocument().AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>(
         mojom::blink::ConsoleMessageSource::kOther,
         mojom::blink::ConsoleMessageLevel::kWarning,
@@ -1275,15 +1278,15 @@
   if (attribute_value.IsNull()) {
     return attribute_value;  // Nullable
   } else if (attribute_value.empty()) {
-    return kPopoverTypeValueAuto;  // ReflectEmpty = "auto"
-  } else if (attribute_value == kPopoverTypeValueAuto ||
-             attribute_value == kPopoverTypeValueManual) {
+    return keywords::kAuto;  // ReflectEmpty = "auto"
+  } else if (attribute_value == keywords::kAuto ||
+             attribute_value == keywords::kManual) {
     return attribute_value;  // ReflectOnly
-  } else if (attribute_value == kPopoverTypeValueHint &&
+  } else if (attribute_value == keywords::kHint &&
              RuntimeEnabledFeatures::HTMLPopoverHintEnabled()) {
     return attribute_value;  // ReflectOnly (with HTMLPopoverHint enabled)
   } else {
-    return kPopoverTypeValueManual;  // ReflectInvalid = "manual"
+    return keywords::kManual;  // ReflectInvalid = "manual"
   }
 }
 void HTMLElement::setPopover(const AtomicString& value) {
@@ -1544,7 +1547,8 @@
   // Force a style update. This ensures that base property values are set prior
   // to `:popover-open` matching, so that transitions can start on the change to
   // top layer.
-  original_document.UpdateStyleAndLayoutTreeForNode(this);
+  original_document.UpdateStyleAndLayoutTreeForNode(
+      this, DocumentUpdateReason::kPopover);
 
   // Queue a delayed hide event, if necessary.
   if (RuntimeEnabledFeatures::HTMLPopoverHintEnabled()) {
@@ -1852,7 +1856,8 @@
       GetDocument().GetExecutionContext()));
   // The layout must be updated here because we call Element::isFocusable,
   // which requires an up-to-date layout.
-  GetDocument().UpdateStyleAndLayoutTreeForNode(this);
+  GetDocument().UpdateStyleAndLayoutTreeForNode(this,
+                                                DocumentUpdateReason::kPopover);
 
   if (auto* dialog = DynamicTo<HTMLDialogElement>(this)) {
     if (RuntimeEnabledFeatures::DialogNewFocusBehaviorEnabled()) {
diff --git a/third_party/blink/renderer/core/html/html_element.h b/third_party/blink/renderer/core/html/html_element.h
index 6806563..c501a310 100644
--- a/third_party/blink/renderer/core/html/html_element.h
+++ b/third_party/blink/renderer/core/html/html_element.h
@@ -66,9 +66,6 @@
   kHint,
   kManual,
 };
-constexpr const char* kPopoverTypeValueAuto = "auto";
-constexpr const char* kPopoverTypeValueHint = "hint";
-constexpr const char* kPopoverTypeValueManual = "manual";
 
 enum class PopoverTriggerAction {
   kNone,
@@ -227,7 +224,7 @@
   virtual bool IsPotentiallyRenderBlocking() const { return false; }
 
   // Popover API related functions.
-  void UpdatePopoverAttribute(String);
+  void UpdatePopoverAttribute(const AtomicString&);
   bool HasPopoverAttribute() const;
   // The IDL reflections:
   AtomicString popover() const;
diff --git a/third_party/blink/renderer/core/html/keywords.json5 b/third_party/blink/renderer/core/html/keywords.json5
index a87db98..f5e9bb9 100644
--- a/third_party/blink/renderer/core/html/keywords.json5
+++ b/third_party/blink/renderer/core/html/keywords.json5
@@ -76,11 +76,15 @@
     // popover attribute (experimental)
     // https://github.com/openui/open-ui/blob/main/research/src/pages/popup/popup.research.explainer.mdx
     "auto",
+    "manual",
     "hint",
-    "async",
+
+    // popovertargetaction attribute
+    // https://html.spec.whatwg.org/C/#attr-popovertargetaction
+    "toggle",
     "show",
     "hide",
-    "toggle",
+    "hover",
 
     // referrerpolicy attribute
     // https://w3c.github.io/webappsec-referrer-policy/#referrer-policies
diff --git a/third_party/blink/renderer/core/html/lazy_load_image_observer.cc b/third_party/blink/renderer/core/html/lazy_load_image_observer.cc
index f4445373..c0f1edfd 100644
--- a/third_party/blink/renderer/core/html/lazy_load_image_observer.cc
+++ b/third_party/blink/renderer/core/html/lazy_load_image_observer.cc
@@ -298,11 +298,11 @@
       // WebEffectiveConnectionType.
       if (visible_load_time_metrics.is_initially_intersecting) {
         UMA_HISTOGRAM_ENUMERATION(
-            "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2",
+            "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3",
             GetNetworkStateNotifier().EffectiveType());
       } else {
         UMA_HISTOGRAM_ENUMERATION(
-            "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2",
+            "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3",
             GetNetworkStateNotifier().EffectiveType());
       }
     } else {
diff --git a/third_party/blink/renderer/core/html/lazy_load_image_observer_test.cc b/third_party/blink/renderer/core/html/lazy_load_image_observer_test.cc
index d558e0a5b..a3cc3e9a 100644
--- a/third_party/blink/renderer/core/html/lazy_load_image_observer_test.cc
+++ b/third_party/blink/renderer/core/html/lazy_load_image_observer_test.cc
@@ -676,9 +676,9 @@
   test::RunPendingTasks();
 
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3", 0);
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
   histogram_tester.ExpectUniqueSample(
       "Blink.VisibleLoadTime.LazyLoadImages.AboveTheFold3.4G", 0, 1);
   histogram_tester.ExpectUniqueSample("Blink.VisibleLoadTime.LazyLoadImages", 0,
@@ -737,7 +737,7 @@
 
   // Nothing was below the fold so no BelowTheFold metrics should be reported.
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
   histogram_tester.ExpectTotalCount(
       "Blink.VisibleLoadTime.LazyLoadImages.BelowTheFold3.4G", 0);
 }
@@ -774,9 +774,9 @@
 
   // VisibleBeforeLoaded should not be recorded since the image is not visible.
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3", 0);
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
 
   // Scroll down so that the image is in the viewport.
   GetDocument().View()->LayoutViewport()->SetScrollOffset(
@@ -789,9 +789,9 @@
   // The image is now visible but loaded before being visible, so no
   // VisibleBeforeLoaded metrics should have been recorded.
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3", 0);
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
 }
 
 TEST_F(LazyLoadImagesTest, AboveTheFoldImageVisibleBeforeLoaded) {
@@ -811,7 +811,7 @@
   // VisibleBeforeLoaded should have been recorded immediately when the image
   // became visible.
   histogram_tester.ExpectUniqueSample(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2",
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3",
       static_cast<int>(WebEffectiveConnectionType::kType4G), 1);
 
   // VisibleLoadTime should not have been recorded yet, since the image is not
@@ -825,10 +825,10 @@
   test::RunPendingTasks();
 
   histogram_tester.ExpectUniqueSample(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2",
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3",
       static_cast<int>(WebEffectiveConnectionType::kType4G), 1);
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
   histogram_tester.ExpectTotalCount("Blink.VisibleLoadTime.LazyLoadImages", 1);
   histogram_tester.ExpectTotalCount(
       "Blink.VisibleLoadTime.LazyLoadImages.AboveTheFold3", 1);
@@ -886,9 +886,9 @@
   test::RunPendingTasks();
 
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3", 0);
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
   histogram_tester.ExpectUniqueSample("Blink.VisibleLoadTime.LazyLoadImages", 0,
                                       1);
   histogram_tester.ExpectTotalCount(
@@ -931,7 +931,7 @@
   // VisibleBeforeLoaded should have been recorded immediately when the image
   // became visible.
   histogram_tester.ExpectUniqueSample(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2",
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3",
       static_cast<int>(WebEffectiveConnectionType::kType4G), 1);
 
   // VisibleLoadTime should not have been recorded yet, since the image is not
@@ -945,9 +945,9 @@
   test::RunPendingTasks();
 
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3", 0);
   histogram_tester.ExpectUniqueSample(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2",
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3",
       static_cast<int>(WebEffectiveConnectionType::kType4G), 1);
   histogram_tester.ExpectTotalCount("Blink.VisibleLoadTime.LazyLoadImages", 1);
   histogram_tester.ExpectTotalCount(
@@ -981,9 +981,9 @@
   Compositor().BeginFrame();
   test::RunPendingTasks();
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3", 0);
   histogram_tester.ExpectTotalCount(
-      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2", 0);
+      "Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3", 0);
   histogram_tester.ExpectTotalCount(
       "Blink.VisibleLoadTime.LazyLoadImages.AboveTheFold3.4G", 0);
   histogram_tester.ExpectTotalCount(
diff --git a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
index 9bd4eebc..6b7b86f7 100644
--- a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
@@ -1679,7 +1679,8 @@
     }
   }
 
-  element->GetDocument().UpdateStyleAndLayoutTreeForNode(element);
+  element->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      element, DocumentUpdateReason::kInspector);
   StyleResolver& style_resolver = element->GetDocument().GetStyleResolver();
   // Container rule origin no longer known at this point, match name from all
   // scopes.
@@ -1716,7 +1717,8 @@
 InspectorDOMAgent::GetContainerQueryingDescendants(Element* container) {
   // This won't work for edge cases with display locking
   // (https://crbug.com/1235306).
-  container->GetDocument().UpdateStyleAndLayoutTreeForSubtree(container);
+  container->GetDocument().UpdateStyleAndLayoutTreeForSubtree(
+      container, DocumentUpdateReason::kInspector);
 
   HeapVector<Member<Element>> querying_descendants;
   for (Element& element : ElementTraversal::DescendantsOf(*container)) {
diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc
index 162d2ee..7172ec1 100644
--- a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc
@@ -750,6 +750,8 @@
           timing.CalculateMillisecondDelta(timing.WorkerRespondWithSettled()))
       .setSendStart(timing.CalculateMillisecondDelta(timing.SendStart()))
       .setSendEnd(timing.CalculateMillisecondDelta(timing.SendEnd()))
+      .setReceiveHeadersStart(
+          timing.CalculateMillisecondDelta(timing.ReceiveHeadersStart()))
       .setReceiveHeadersEnd(
           timing.CalculateMillisecondDelta(timing.ReceiveHeadersEnd()))
       .setPushStart(timing.PushStart().since_origin().InSecondsF())
diff --git a/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc b/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc
index 4c045cc..6e59ef0 100644
--- a/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_style_resolver.cc
@@ -29,7 +29,8 @@
 
   // Update style and layout tree for collecting an up-to-date set of rules
   // and animations.
-  element_->GetDocument().UpdateStyleAndLayoutTreeForNode(element_);
+  element_->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      element_, DocumentUpdateReason::kInspector);
 
   // FIXME: It's really gross for the inspector to reach in and access
   // StyleResolver directly here. We need to provide the Inspector better APIs
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
index 672c477a..1510477 100644
--- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -909,6 +909,8 @@
            timing.CalculateMillisecondDelta(timing.WorkerReady()));
   dict.Add("sendStart", timing.CalculateMillisecondDelta(timing.SendStart()));
   dict.Add("sendEnd", timing.CalculateMillisecondDelta(timing.SendEnd()));
+  dict.Add("receiveHeadersStart",
+           timing.CalculateMillisecondDelta(timing.ReceiveHeadersStart()));
   dict.Add("receiveHeadersEnd",
            timing.CalculateMillisecondDelta(timing.ReceiveHeadersEnd()));
   dict.Add("pushStart", timing.PushStart().since_origin().InSecondsF());
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index be59b40..c2eb91a 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -2483,7 +2483,7 @@
     auto required_permissions_for_fenced_frames =
         FencedFrameProperties()
             ? base::make_span(
-                  FencedFrameProperties()->required_permissions_to_load())
+                  FencedFrameProperties()->effective_enabled_permissions())
             : base::span<const mojom::blink::PermissionsPolicyFeature>();
     security_init.ApplyPermissionsPolicy(
         *frame_.Get(), response_, frame_policy_, initial_permissions_policy_,
diff --git a/third_party/blink/renderer/core/svg/svg_animate_element.cc b/third_party/blink/renderer/core/svg/svg_animate_element.cc
index a6e5a89..845dc1d 100644
--- a/third_party/blink/renderer/core/svg/svg_animate_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_animate_element.cc
@@ -60,7 +60,8 @@
   // Refer to comment in Element::computedStyle.
   DCHECK(element->InActiveDocument());
 
-  element->GetDocument().UpdateStyleAndLayoutTreeForNode(element);
+  element->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      element, DocumentUpdateReason::kSMILAnimation);
 
   // Don't include any properties resulting from CSS Transitions/Animations or
   // SMIL animations, as we want to retrieve the "base value".
diff --git a/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc b/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc
index 3790341..73a592ad 100644
--- a/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc
+++ b/third_party/blink/renderer/core/view_transition/view_transition_style_tracker.cc
@@ -694,6 +694,13 @@
   for (const auto& root_name : AllRootTags())
     transition_names.push_front(root_name);
 
+#if DCHECK_IS_ON()
+  for (wtf_size_t i = 0; i < transition_names.size(); ++i) {
+    DCHECK_EQ(transition_names.Find(transition_names[i]), i)
+        << " Duplicate transition name: " << transition_names[i];
+  }
+#endif
+
   // This informs the style engine the set of names we have, which will be used
   // to create the pseudo element tree.
   document_->GetStyleEngine().SetViewTransitionNames(transition_names);
@@ -787,7 +794,6 @@
       data->element_index = next_index++;
       element_data_map_.insert(name, data);
     }
-
     // Reuse any previously generated snapshot_id for this element. If there was
     // none yet, then generate the resource id.
     auto& snapshot_id =
@@ -828,10 +834,18 @@
   if (found_new_names) {
     VectorOf<std::pair<AtomicString, int>> new_name_pairs;
     int next_name_index = 0;
-    for (const auto& root_name : AllRootTags())
+    HashSet<AtomicString> unique_names;
+    for (const auto& root_name : AllRootTags()) {
       new_name_pairs.push_back(std::make_pair(root_name, ++next_name_index));
-    for (auto& [name, data] : element_data_map_)
-      new_name_pairs.push_back(std::make_pair(name, data->element_index));
+      DCHECK(!unique_names.Contains(root_name));
+      unique_names.insert(root_name);
+    }
+    for (auto& [name, data] : element_data_map_) {
+      if (!unique_names.Contains(name)) {
+        new_name_pairs.push_back(std::make_pair(name, data->element_index));
+        unique_names.insert(name);
+      }
+    }
 
     std::sort(new_name_pairs.begin(), new_name_pairs.end(),
               [](const std::pair<AtomicString, int>& left,
@@ -843,6 +857,13 @@
     for (auto& [name, index] : new_name_pairs)
       new_names.push_back(name);
 
+#if DCHECK_IS_ON()
+    for (wtf_size_t i = 0; i < new_names.size(); ++i) {
+      DCHECK_EQ(new_names.Find(new_names[i]), i)
+          << " Duplicate transition name: " << new_names[i];
+    }
+#endif
+
     document_->GetStyleEngine().SetViewTransitionNames(new_names);
   }
 
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index f51fdbeb..99c6b2e 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -4734,7 +4734,8 @@
     return false;
   }
 
-  document->UpdateStyleAndLayoutTreeForNode(node);
+  document->UpdateStyleAndLayoutTreeForNode(
+      node, DocumentUpdateReason::kAccessibility);
 
   // An AXObject's node will always be of type `Element`, `Document` or
   // `Text`. If the object we're currently on is associated with the currently
@@ -4764,7 +4765,8 @@
   if (!document || !node)
     return false;
 
-  document->UpdateStyleAndLayoutTreeForNode(node);
+  document->UpdateStyleAndLayoutTreeForNode(
+      node, DocumentUpdateReason::kAccessibility);
 
   if (!CanSetFocusAttribute())
     return false;
diff --git a/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl b/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl
new file mode 100644
index 0000000..2256c39
--- /dev/null
+++ b/third_party/blink/renderer/modules/ad_auction/ad_auction_data_config.idl
@@ -0,0 +1,10 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Information about a Bidding and Auction server style auction.
+// https://github.com/WICG/turtledove/blob/main/FLEDGE_browser_bidding_and_auction_API.md
+
+dictionary AdAuctionDataConfig {
+  required USVString seller;
+};
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc b/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc
index 28492b3..3645d1cca 100644
--- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc
+++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc
@@ -36,6 +36,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_union_fencedframeconfig_usvstring.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_union_usvstring_usvstringsequence.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_ad_auction_data_config.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_ad_properties.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_ad_request_config.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_ad_targeting.h"
@@ -3410,4 +3411,80 @@
       .canLoadAdAuctionFencedFrame(script_state);
 }
 
+ScriptPromise NavigatorAuction::getInterestGroupAdAuctionData(
+    ScriptState* script_state,
+    const AdAuctionDataConfig* config,
+    ExceptionState& exception_state) {
+  CHECK(config);
+  if (!script_state->ContextIsValid()) {
+    return ScriptPromise();
+  }
+
+  scoped_refptr<const SecurityOrigin> seller = ParseOrigin(config->seller());
+  if (!seller) {
+    exception_state.ThrowTypeError(String::Format(
+        "seller '%s' for AdAuctionDataConfig must be a valid https origin.",
+        config->seller().Utf8().c_str()));
+    return ScriptPromise();
+  }
+
+  auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(
+      script_state, exception_state.GetContext());
+
+  ScriptPromise promise = resolver->Promise();
+
+  ad_auction_service_->GetInterestGroupAdAuctionData(
+      seller, resolver->WrapCallbackInScriptScope(WTF::BindOnce(
+                  &NavigatorAuction::GetInterestGroupAdAuctionDataComplete,
+                  WrapPersistent(this))));
+  return promise;
+}
+
+void NavigatorAuction::GetInterestGroupAdAuctionDataComplete(
+    ScriptPromiseResolver* resolver,
+    mojo_base::BigBuffer data) {
+  ScriptState* script_state = resolver->GetScriptState();
+  v8::Isolate* isolate = script_state->GetIsolate();
+  v8::Local<v8::ArrayBuffer> array_buffer =
+      v8::ArrayBuffer::New(isolate, data.size());
+  if (data.size() > 0) {
+    CHECK(array_buffer->Data());
+    memcpy(array_buffer->Data(), data.data(), data.size());
+  }
+  v8::Local<v8::Uint8Array> uint8_array =
+      v8::Uint8Array::New(array_buffer, 0, data.size());
+  resolver->Resolve(uint8_array);
+}
+
+/* static */
+ScriptPromise NavigatorAuction::getInterestGroupAdAuctionData(
+    ScriptState* script_state,
+    Navigator& navigator,
+    const AdAuctionDataConfig* config,
+    ExceptionState& exception_state) {
+  if (!navigator.DomWindow()) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidAccessError,
+                                      "The document has no window associated.");
+    return ScriptPromise();
+  }
+  RecordCommonFledgeUseCounters(navigator.DomWindow()->document());
+  const ExecutionContext* context = ExecutionContext::From(script_state);
+  if (!context->IsFeatureEnabled(
+          blink::mojom::PermissionsPolicyFeature::kRunAdAuction)) {
+    exception_state.ThrowDOMException(
+        DOMExceptionCode::kNotAllowedError,
+        "Feature run-ad-auction is not enabled by Permissions Policy");
+    return ScriptPromise();
+  }
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kAdInterestGroupAPIRestrictedPolicyByDefault) &&
+      FeatureWouldBeBlockedByRestrictedPermissionsPolicy(navigator)) {
+    AddWarningMessageToConsole(script_state, "run-ad-auction",
+                               "getInterestGroupAdAuctionData");
+  }
+
+  return From(ExecutionContext::From(script_state), navigator)
+      .getInterestGroupAdAuctionData(script_state, config, exception_state);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.h b/third_party/blink/renderer/modules/ad_auction/navigator_auction.h
index a28e3042..f6638c2 100644
--- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.h
+++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.h
@@ -26,6 +26,7 @@
 
 namespace blink {
 
+class AdAuctionDataConfig;
 class AdRequestConfig;
 class Ads;
 class AuctionAdInterestGroup;
@@ -123,6 +124,15 @@
       const Vector<std::pair<String, String>>& replacement,
       ExceptionState& exception_state);
 
+  ScriptPromise getInterestGroupAdAuctionData(ScriptState* script_state,
+                                              const AdAuctionDataConfig* config,
+                                              ExceptionState& exception_state);
+  static ScriptPromise getInterestGroupAdAuctionData(
+      ScriptState* script_state,
+      Navigator& navigator,
+      const AdAuctionDataConfig* config,
+      ExceptionState& exception_state);
+
   ScriptPromise createAdRequest(ScriptState*,
                                 const AdRequestConfig*,
                                 ExceptionState&);
@@ -202,6 +212,9 @@
   // Completion callback for Mojo call made by deprecatedReplaceInURNComplete().
   void ReplaceInURNComplete(ScriptPromiseResolver* resolver);
 
+  void GetInterestGroupAdAuctionDataComplete(ScriptPromiseResolver* resolver,
+                                             mojo_base::BigBuffer data);
+
   // Manage queues of cross-site join and leave operations that have yet to be
   // sent to the browser process.
   JoinLeaveQueue<PendingJoin> queued_cross_site_joins_;
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl b/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl
index 8adf2fb..6d4a53a3 100644
--- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl
+++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.idl
@@ -37,6 +37,9 @@
   [RuntimeEnable=AllowURLsinIframes, CallWith=ScriptState, Measure, RaisesException]
   Promise<void> deprecatedReplaceInURN(UrnOrConfig urn_or_config, record<USVString, USVString> replacements);
 
+  [RuntimeEnable=FledgeBiddingAndAuctionServer, CallWith=ScriptState, Measure, RaisesException]
+  Promise<Uint8Array> getInterestGroupAdAuctionData(AdAuctionDataConfig config);
+
   [RuntimeEnabled=Parakeet, CallWith=ScriptState, Measure, RaisesException]
   Promise<Ads> createAdRequest(AdRequestConfig config);
 
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
index 3394cf7..dcf9247f8 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
@@ -495,7 +495,8 @@
         CanvasOps::kSetFont, IdentifiabilityBenignStringToken(new_font));
   }
 
-  canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(canvas());
+  canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      canvas(), DocumentUpdateReason::kCanvas);
 
   // The following early exit is dependent on the cache not being empty
   // because an empty cache may indicate that a style change has occured
@@ -725,8 +726,10 @@
 
 String CanvasRenderingContext2D::direction() const {
   if (GetState().GetDirection() ==
-      CanvasRenderingContext2DState::kDirectionInherit)
-    canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(canvas());
+      CanvasRenderingContext2DState::kDirectionInherit) {
+    canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(
+        canvas(), DocumentUpdateReason::kCanvas);
+  }
   return ToTextDirection(GetState().GetDirection(), canvas()) ==
                  TextDirection::kRtl
              ? kRtlDirectionString
@@ -931,7 +934,8 @@
   if (!canvas()->GetDocument().GetFrame())
     return MakeGarbageCollected<TextMetrics>();
 
-  canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(canvas());
+  canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      canvas(), DocumentUpdateReason::kCanvas);
 
   const Font& font = AccessFont();
 
@@ -986,7 +990,8 @@
   // accessFont needs the style to be up to date, but updating style can cause
   // script to run, (e.g. due to autofocus) which can free the canvas (set size
   // to 0, for example), so update style before grabbing the PaintCanvas.
-  canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(canvas());
+  canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(
+      canvas(), DocumentUpdateReason::kCanvas);
 
   cc::PaintCanvas* c = GetOrCreatePaintCanvas();
   if (!c)
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc b/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc
index 7b052ccc7..a2822c4 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc
+++ b/third_party/blink/renderer/modules/indexeddb/idb_object_store.cc
@@ -58,6 +58,7 @@
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
+#include "third_party/blink/renderer/platform/wtf/functional.h"
 #include "third_party/blink/renderer/platform/wtf/shared_buffer.h"
 #include "v8/include/v8.h"
 
@@ -772,8 +773,9 @@
 
   IDBRequest* request = IDBRequest::Create(
       script_state, this, transaction_.Get(), std::move(metrics));
-  BackendDB()->Clear(transaction_->Id(), Id(),
-                     request->CreateWebCallbacks().release());
+  BackendDB()->Clear(
+      transaction_->Id(), Id(),
+      WTF::BindOnce(&IDBRequest::OnClear, WrapPersistent(request)));
   return request;
 }
 
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request.cc b/third_party/blink/renderer/modules/indexeddb/idb_request.cc
index 9054edf..b1abb5a 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_request.cc
+++ b/third_party/blink/renderer/modules/indexeddb/idb_request.cc
@@ -445,6 +445,12 @@
                     WrapPersistent(transaction_.Get()))));
 }
 
+void IDBRequest::OnClear(bool success) {
+  if (success) {
+    HandleResponse();
+  }
+}
+
 void IDBRequest::EnqueueResponse(DOMException* error) {
   TRACE_EVENT0("IndexedDB", "IDBRequest::EnqueueResponse(DOMException)");
   if (!ShouldEnqueueEvent()) {
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request.h b/third_party/blink/renderer/modules/indexeddb/idb_request.h
index 2906fe9..2e67f39e 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_request.h
+++ b/third_party/blink/renderer/modules/indexeddb/idb_request.h
@@ -282,6 +282,8 @@
       mojo::PendingReceiver<mojom::blink::IDBDatabaseGetAllResultSink>
           receiver);
 
+  void OnClear(bool success);
+
   // Only IDBOpenDBRequest instances should receive these:
   virtual void EnqueueBlocked(int64_t old_version) { NOTREACHED(); }
   virtual void EnqueueUpgradeNeeded(int64_t old_version,
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc b/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
index e9c252f..624e0cc 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
+++ b/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
@@ -143,8 +143,7 @@
           pending_callbacks) override {}
   void Clear(int64_t transaction_id,
              int64_t object_store_id,
-             mojo::PendingAssociatedRemote<mojom::blink::IDBCallbacks>
-                 pending_callbacks) override {}
+             ClearCallback callback) override {}
   void CreateIndex(int64_t transaction_id,
                    int64_t object_store_id,
                    int64_t index_id,
diff --git a/third_party/blink/renderer/modules/indexeddb/mock_idb_database.h b/third_party/blink/renderer/modules/indexeddb/mock_idb_database.h
index 54015c80..4c7940b1 100644
--- a/third_party/blink/renderer/modules/indexeddb/mock_idb_database.h
+++ b/third_party/blink/renderer/modules/indexeddb/mock_idb_database.h
@@ -132,9 +132,7 @@
               (override));
   MOCK_METHOD(void,
               Clear,
-              (int64_t transaction_id,
-               int64_t object_store_id,
-               mojo::PendingAssociatedRemote<mojom::blink::IDBCallbacks>),
+              (int64_t transaction_id, int64_t object_store_id, ClearCallback),
               (override));
   MOCK_METHOD(void, DidBecomeInactive, (), (override));
 
diff --git a/third_party/blink/renderer/modules/indexeddb/web_idb_database.cc b/third_party/blink/renderer/modules/indexeddb/web_idb_database.cc
index 739a4d16..925d442 100644
--- a/third_party/blink/renderer/modules/indexeddb/web_idb_database.cc
+++ b/third_party/blink/renderer/modules/indexeddb/web_idb_database.cc
@@ -275,14 +275,13 @@
       GetCallbacksProxy(base::WrapUnique(callbacks)));
 }
 
-void WebIDBDatabase::Clear(int64_t transaction_id,
-                           int64_t object_store_id,
-                           WebIDBCallbacks* callbacks) {
+void WebIDBDatabase::Clear(
+    int64_t transaction_id,
+    int64_t object_store_id,
+    mojom::blink::IDBDatabase::ClearCallback success_callback) {
   IndexedDBDispatcher::ResetCursorPrefetchCaches(transaction_id, nullptr);
-
-  callbacks->SetState(nullptr, transaction_id);
   database_->Clear(transaction_id, object_store_id,
-                   GetCallbacksProxy(base::WrapUnique(callbacks)));
+                   std::move(success_callback));
 }
 
 void WebIDBDatabase::CreateIndex(int64_t transaction_id,
diff --git a/third_party/blink/renderer/modules/indexeddb/web_idb_database.h b/third_party/blink/renderer/modules/indexeddb/web_idb_database.h
index 60b8d34..90a60e8 100644
--- a/third_party/blink/renderer/modules/indexeddb/web_idb_database.h
+++ b/third_party/blink/renderer/modules/indexeddb/web_idb_database.h
@@ -105,7 +105,9 @@
   void GetKeyGeneratorCurrentNumber(int64_t transaction_id,
                                     int64_t object_store_id,
                                     WebIDBCallbacks*);
-  void Clear(int64_t transaction_id, int64_t object_store_id, WebIDBCallbacks*);
+  void Clear(int64_t transaction_id,
+             int64_t object_store_id,
+             mojom::blink::IDBDatabase::ClearCallback success_callback);
   void CreateIndex(int64_t transaction_id,
                    int64_t object_store_id,
                    int64_t index_id,
diff --git a/third_party/blink/renderer/modules/sensor/README.md b/third_party/blink/renderer/modules/sensor/README.md
index 4231db0..b36be89c 100644
--- a/third_party/blink/renderer/modules/sensor/README.md
+++ b/third_party/blink/renderer/modules/sensor/README.md
@@ -1,25 +1,35 @@
-# Generic Sensor
+# Generic Sensor API
 
-`third_party/blink/renderer/modules/sensor` implements the following concrete
-sensor interfaces based on the [Generic Sensor API]
-(https://w3c.github.io/sensors):
-1. [Ambient Light Sensor] (https://w3c.github.io/ambient-light)
-1. [Accelerometer] (https://w3c.github.io/accelerometer)
-1. [Gyroscope] (https://w3c.github.io/gyroscope)
-1. [Magnetometer] (https://w3c.github.io/magnetometer)
-1. [Absolute Orientation Sensor] (https://w3c.github.io/orientation-sensor)
+This directory contains the Blink part (including the JavaScript APIs exposed
+to users) of the [Generic Sensor API](https://w3c.github.io/sensors).
+
+The following concrete sensor interfaces are currently implemented:
+
+1. [Ambient Light Sensor](https://w3c.github.io/ambient-light)
+1. [Accelerometer, Gravity Sensor and Linear Acceleration Sensor](https://w3c.github.io/accelerometer)
+1. [Gyroscope](https://w3c.github.io/gyroscope)
+1. [Magnetometer](https://w3c.github.io/magnetometer)
+1. [Absolute Orientation Sensor and Relative Orientation Sensor](https://w3c.github.io/orientation-sensor)
+
+Some of the interfaces above depend on the `SensorExtraClasses` runtime flag.
 
 The platform-specific parts of the implementation are located in
-`services/device/generic_sensor`.
-
+[`services/device/generic_sensor`](/services/device/generic_sensor).
 
 ## Testing
 
-Sensors web tests are located in `web_tests/sensor`.
+Sensors web tests are part of the
+[web-platform-tests](https://web-platform-tests.org) project and are located in
+multiple directories under `web_tests/external/wpt`. For example ,
+[`web_tests/external/wpt/accelerometer`](/third_party/blink/web_tests/external/wpt/accelerometer).
+The sensor-agnostic parts of the tests are located in
+[`web_tests/external/wpt/generic-sensor`](/third_party/blink/web_tests/external/wpt/generic-sensor).
 
-Sensors browser tests are located in `content/test/data/generic_sensor`.
+Browser tests are located in
+[`content/browser/generic_sensor`](/content/browser/generic_sensor).
 
+## Overall architecture
 
-## Design Documents
-
-Please refer to the [design documentation](https://docs.google.com/document/d/1Ml65ZdW5AgIsZTszk4mD_ohr40pcrdVFOIf0ZtWxDv0) for more details.
+The current design of the Chromium implementation of the Generic Sensor API is
+described in
+[`services/device/generic_sensor`](/services/device/generic_sensor/README.md).
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.cc b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.cc
index 78a45fe..2a07162f 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.cc
@@ -20,6 +20,7 @@
 #include "base/task/single_thread_task_runner.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/time/default_tick_clock.h"
+#include "mojo/public/cpp/bindings/direct_receiver.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/platform/heap/blink_gc_memory_dump_provider.h"
@@ -54,7 +55,8 @@
 
   base::MessagePumpType message_pump_type = base::MessagePumpType::DEFAULT;
   if (params.thread_type == ThreadType::kCompositorThread &&
-      base::FeatureList::IsEnabled(features::kInputIpcDirect)) {
+      base::FeatureList::IsEnabled(features::kDirectCompositorThreadIpc) &&
+      mojo::IsDirectReceiverSupported()) {
     message_pump_type = base::MessagePumpType::IO;
   }
   thread_ = std::make_unique<SimpleThreadImpl>(
diff --git a/third_party/blink/renderer/platform/widget/input/widget_input_handler_impl.cc b/third_party/blink/renderer/platform/widget/input/widget_input_handler_impl.cc
index 97b5d5f4..cd71042 100644
--- a/third_party/blink/renderer/platform/widget/input/widget_input_handler_impl.cc
+++ b/third_party/blink/renderer/platform/widget/input/widget_input_handler_impl.cc
@@ -51,8 +51,8 @@
       frame_widget_input_handler_(std::move(frame_widget_input_handler)) {
   // NOTE: DirectReceiver must be bound on an IO thread, so input handlers which
   // live on the main thread (e.g. for popups) cannot use direct IPC for now.
-  if (base::FeatureList::IsEnabled(features::kInputIpcDirect) &&
-      base::CurrentIOThread::IsSet()) {
+  if (base::FeatureList::IsEnabled(features::kDirectCompositorThreadIpc) &&
+      base::CurrentIOThread::IsSet() && mojo::IsDirectReceiverSupported()) {
     receiver_.emplace<DirectReceiver>(mojo::DirectReceiverKey{}, this);
   } else {
     receiver_.emplace<Receiver>(this);
diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_party/blink/renderer/platform/widget/widget_base.cc
index 6fa9ebe3..1b6374e 100644
--- a/third_party/blink/renderer/platform/widget/widget_base.cc
+++ b/third_party/blink/renderer/platform/widget/widget_base.cc
@@ -22,6 +22,7 @@
 #include "gpu/command_buffer/client/shared_memory_limits.h"
 #include "gpu/command_buffer/common/context_creation_attribs.h"
 #include "gpu/ipc/client/gpu_channel_host.h"
+#include "mojo/public/cpp/bindings/direct_receiver.h"
 #include "mojo/public/cpp/bindings/pending_associated_receiver.h"
 #include "mojo/public/cpp/bindings/pending_associated_remote.h"
 #include "services/viz/public/cpp/gpu/context_provider_command_buffer.h"
@@ -611,6 +612,12 @@
     params->compositor_task_runner = main_thread_compositor_task_runner_;
   }
 
+  if (base::FeatureList::IsEnabled(features::kDirectCompositorThreadIpc) &&
+      !for_web_tests && params->compositor_task_runner &&
+      mojo::IsDirectReceiverSupported()) {
+    params->use_direct_client_receiver = true;
+  }
+
   // The renderer runs animations and layout for animate_only BeginFrames.
   params->wants_animate_only_begin_frames = true;
 
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 25ce4b6..15c480a 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -266,11 +266,6 @@
 crbug.com/1443559 virtual/view-transition-mpa-serialization/inspector-protocol/css/css-get-styles-for-view-transition.js [ Failure ]
 crbug.com/1443559 virtual/view-transition-mpa-serialization/view-transition/capture-callback-exception.html [ Failure ]
 crbug.com/1443559 virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/old-content-captures-clip-path.html [ Failure ]
-crbug.com/1443559 virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/only-child-new.html [ Timeout ]
-crbug.com/1443559 virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/only-child-old.html [ Timeout ]
-crbug.com/1443559 virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/root-to-shared-animation-end.html [ Timeout ]
-crbug.com/1443559 virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/root-to-shared-animation-incoming.html [ Timeout ]
-crbug.com/1443559 virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/root-to-shared-animation-start.html [ Timeout ]
 crbug.com/1443559 [ Mac ] virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/fractional-translation-from-transform.html [ Failure ]
 
 ########## Ref tests can't be rebaselined ##########
@@ -2895,6 +2890,7 @@
 crbug.com/626703 [ Win ] virtual/partitioned-cookies/http/tests/inspector-protocol/network/disabled-cache-navigation.js [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 [ Mac13 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-simulcast.https.html [ Timeout ]
 crbug.com/626703 [ Mac13 ] external/wpt/html/semantics/links/hyperlink-auditing/headers.optional.html [ Timeout ]
 crbug.com/626703 [ Mac13 ] virtual/threaded-prefer-compositing/external/wpt/scroll-animations/scroll-timelines/effect-updateTiming.html [ Timeout ]
 crbug.com/626703 [ Mac13 ] virtual/threaded-prefer-compositing/external/wpt/scroll-animations/view-timelines/view-timeline-range.html [ Timeout ]
@@ -6838,3 +6834,4 @@
 crbug.com/1448024 external/wpt/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html [ Failure Pass ]
 crbug.com/1447101 media/video-source-none-supported.html [ Failure Pass Timeout ]
 crbug.com/1430215 external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html [ Failure Pass ]
+crbug.com/1434378 virtual/fenced-frame-mparch/http/tests/inspector-protocol/fenced-frame/permissions-policy-fenced-frame.https.js [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index dc5e8b3..35f9590 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -187893,7 +187893,7 @@
        ]
       ],
       "break-spaces-006.html": [
-       "c13a28e95fc8305cec401a2f61da4edc4caaf8ce",
+       "056aa8a21bcda057df1aef26836c7705c715874f",
        [
         null,
         [
@@ -187958,7 +187958,7 @@
        ]
       ],
       "break-spaces-011.html": [
-       "8c40a31a35688512742727639c11091ac8163dd8",
+       "0355d6d6b519bca0e210c0a1151f4deccd1666d7",
        [
         null,
         [
@@ -272683,11 +272683,11 @@
   "support": {
    ".cache": {
     "gitignore2.json": [
-     "0986412eeea04432d4ea5aafe271f99667be86e4",
+     "ede94680d234933a92ae243efcb257984f7d7149",
      []
     ],
     "mtime.json": [
-     "efff8b6c4f72cbf15b12faf22ec23cde496fe03d",
+     "4acca455e47ccbaa0633d90d75813ff291b4c01a",
      []
     ]
    },
@@ -298133,6 +298133,10 @@
       "eda83f2d1d575ab6f45e99146a3b6d3f13b3a20d",
       []
      ],
+     "stretch-flex-item-checkbox-input.html.ini": [
+      "63968e3e8e8a1f7bcc28f0ec74185129bd03b86d",
+      []
+     ],
      "stretch-flex-item-radio-input-ref.html": [
       "7ba10710b70fa15d03c5666570efadceeb6e93ae",
       []
@@ -327118,7 +327122,7 @@
       []
      ],
      "perspective-split-by-zero-w.html.ini": [
-      "353d29429bfa0e114c37c27c8647715cc41592a7",
+      "32f1568b4024e788214c6a8a4fe812cbeaa12ed9",
       []
      ],
      "perspective-svg-001-ref.html": [
@@ -330143,7 +330147,7 @@
        []
       ],
       "kind-of-widget-fallback-input-search-background-origin-001.html.ini": [
-       "e701273fda8c0dd3be9dd3e01c02d2f0c8095745",
+       "75d19889abe7c3dbe90f3827115c58fe7ce20649",
        []
       ],
       "kind-of-widget-fallback-input-search-background-position-001.html.ini": [
@@ -330158,6 +330162,10 @@
        "01b12488a5a9b1a3900b8a88af5aa28f09582a51",
        []
       ],
+      "kind-of-widget-fallback-input-search-border-block-start-style-001.html.ini": [
+       "67d20de08231711ebeea0d56868aecd6e9d4be5c",
+       []
+      ],
       "kind-of-widget-fallback-input-search-border-block-start-width-001.html.ini": [
        "58815a13a5947defd3acedc17f7f9536d72d7f8d",
        []
@@ -337476,7 +337484,7 @@
       []
      ],
      "backdrop-filter-isolation-isolate.html.ini": [
-      "0a19619ada965955bd9934f6fa60735037683908",
+      "134197d0a59c2320de5970fd2e4922af025f30cd",
       []
      ],
      "backdrop-filter-isolation-ref.html": [
@@ -337596,13 +337604,17 @@
       []
      ],
      "backdrop-filters-opacity.html.ini": [
-      "9b23d738a343d8334c35d9bed08c69578c395907",
+      "ff938bf4b69f33093b887cb0b30b75855f33df48",
       []
      ],
      "backdrop-filters-saturate-ref.html": [
       "f3407f344906e0a3e362a7d18c35e7fad9a6068e",
       []
      ],
+     "backdrop-filters-saturate.html.ini": [
+      "54fa147072000a13154fba488d0942f9ac161eb8",
+      []
+     ],
      "backdrop-filters-sepia-ref.html": [
       "eae10fe65c16ad94f9d6b6a3d9319daeb09692e5",
       []
@@ -337671,6 +337683,10 @@
       "f10855da38fcd86b07151db96e2b9b8afd726379",
       []
      ],
+     "css-backdrop-filters-animation-hue-rotate.html.ini": [
+      "ce4f2d71c05abf55f3e507adcd0bab655be146e6",
+      []
+     ],
      "css-backdrop-filters-animation-invert-ref.html": [
       "9d4efb433e08dadac9e9d69b3f7e7e7791d2d002",
       []
@@ -338746,10 +338762,6 @@
       []
      ],
      "parsing": {
-      "offset-parsing-valid-expected.txt": [
-       "82b61e302a466b6e72e19ba47ba86a338bb11cd1",
-       []
-      ],
       "offset-parsing-valid.html.ini": [
        "d001224a3047b7d59854e55d58b045a9716f5707",
        []
@@ -340813,6 +340825,10 @@
       "01b8bbccd44d7f265c321227ba4052baac9471ec",
       []
      ],
+     "override-to-optional.tentative.html.ini": [
+      "2ae8803c7a319307129356489c95b991ee204f3f",
+      []
+     ],
      "report-only-auto.tentative.html.headers": [
       "1509127277798c1fae2c4acff201a1b8ee518d12",
       []
@@ -351849,7 +351865,7 @@
        ],
        "event-order": {
         "before-load-hash-twice.html.ini": [
-         "eeba5ab9572d12ad0a74c1e30d96c4fa476e5028",
+         "46f2992a1b006effd80a729210b14cf08351a570",
          []
         ],
         "before-load-hash.html.ini": [
@@ -378448,6 +378464,14 @@
      "e619090fcb964cbc6cdfadd61658e13fe27a69f4",
      []
     ],
+    "constructor-basic.https-expected.txt": [
+     "1ad81d46030e1f76e60f7931d2d8d76edc870f51",
+     []
+    ],
+    "constructor-basic.https.html.ini": [
+     "3cf1ba2ee67744272852f4ce24f8d7bdd0f6f7e2",
+     []
+    ],
     "constructor-invalid-expected.txt": [
      "812d44e52debafc3b28207676a4b25a1b7eb97cb",
      []
@@ -380501,7 +380525,7 @@
      []
     ],
     "modulepreload-as.html.ini": [
-     "fe423267e5bf94f1984c2c03e29c51198028b9c0",
+     "cf114795216288c6a1815835316c415c6ffcb713",
      []
     ],
     "modulepreload-expected.txt": [
@@ -387496,7 +387520,7 @@
       []
      ],
      "unregister-immediately-during-extendable-events.https.html.ini": [
-      "0f2204cc829bab1ce95e8ac9ee827d992dc061ea",
+      "5a9efe769f34f0fa60d440ea7426f969dfc320a9",
       []
      ],
      "unregister-then-register-new-script.https-expected.txt": [
@@ -393017,7 +393041,7 @@
      []
     ],
     "request-video-frame-callback-webrtc.https.html.ini": [
-     "b19357b2428c43ae23bf3b42e41e36a8324b2b99",
+     "ca1de5dc41799bed5f77904d0eab5c1dd5505f98",
      []
     ]
    },
@@ -472768,7 +472792,7 @@
        ]
       ],
       "offset-parsing-valid.html": [
-       "3ec10a7918f4c54197801a854df8a325b878af7a",
+       "7a5d9c94f057f2c20baa68a246e98424967c0d14",
        [
         null,
         {}
@@ -580594,7 +580618,7 @@
    },
    "notifications": {
     "constructor-basic.https.html": [
-     "3f704de03e3395e0a4a1266f3e1eec17fc94cbe0",
+     "df959b922f9745c14045f423de8dafc89556f464",
      [
       null,
       {}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/stretch-flex-item-checkbox-input.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/stretch-flex-item-checkbox-input.html.ini
new file mode 100644
index 0000000..63968e3e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/stretch-flex-item-checkbox-input.html.ini
@@ -0,0 +1,3 @@
+[stretch-flex-item-checkbox-input.html]
+  expected:
+    if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-split-by-zero-w.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-split-by-zero-w.html.ini
index 353d294..32f1568 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-split-by-zero-w.html.ini
+++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-split-by-zero-w.html.ini
@@ -1,4 +1,5 @@
 [perspective-split-by-zero-w.html]
   expected:
-    if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
     if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
+    if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
+    if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html.ini
index e701273f..75d1988 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html.ini
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-origin-001.html.ini
@@ -1,3 +1,4 @@
 [kind-of-widget-fallback-input-search-background-origin-001.html]
   expected:
+    if (product == "content_shell") and (os == "win") and (port == "win10.20h2"): FAIL
     if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-style-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-style-001.html.ini
new file mode 100644
index 0000000..67d20de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-block-start-style-001.html.ini
@@ -0,0 +1,3 @@
+[kind-of-widget-fallback-input-search-border-block-start-style-001.html]
+  expected:
+    if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filter-isolation-isolate.html.ini b/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filter-isolation-isolate.html.ini
index 0a19619..134197d 100644
--- a/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filter-isolation-isolate.html.ini
+++ b/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filter-isolation-isolate.html.ini
@@ -1,5 +1,6 @@
 [backdrop-filter-isolation-isolate.html]
   expected:
-    if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
     if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+    if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
+    if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
     if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-opacity.html.ini b/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-opacity.html.ini
index 9b23d73..ff938bf 100644
--- a/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-opacity.html.ini
+++ b/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-opacity.html.ini
@@ -1,4 +1,5 @@
 [backdrop-filters-opacity.html]
   expected:
+    if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
     if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
     if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-saturate.html.ini b/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-saturate.html.ini
new file mode 100644
index 0000000..54fa1470
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/filter-effects/backdrop-filters-saturate.html.ini
@@ -0,0 +1,3 @@
+[backdrop-filters-saturate.html]
+  expected:
+    if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/css-backdrop-filters-animation-hue-rotate.html.ini b/third_party/blink/web_tests/external/wpt/css/filter-effects/css-backdrop-filters-animation-hue-rotate.html.ini
new file mode 100644
index 0000000..ce4f2d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/filter-effects/css-backdrop-filters-animation-hue-rotate.html.ini
@@ -0,0 +1,3 @@
+[css-backdrop-filters-animation-hue-rotate.html]
+  expected:
+    if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/motion/parsing/offset-parsing-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/motion/parsing/offset-parsing-valid-expected.txt
new file mode 100644
index 0000000..d864253
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/motion/parsing/offset-parsing-valid-expected.txt
@@ -0,0 +1,32 @@
+This is a testharness.js-based test.
+PASS e.style['offset'] = "100px none auto 90deg" should set the property value
+PASS e.style['offset'] = "100px" should set the property value
+FAIL e.style['offset'] = "auto none reverse" should set the property value assert_equals: serialization should be canonical expected "none reverse" but got "auto none reverse"
+PASS e.style['offset'] = "auto" should set the property value
+PASS e.style['offset'] = "center bottom path(\"M 1 2 V 3 Z\")" should set the property value
+PASS e.style['offset'] = "center center path(\"M 0 0 L 100 100 M 100 200 L 200 200 Z L 300 300 Z\") 100% 90deg / left bottom" should set the property value
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should set the property value
+PASS e.style['offset'] = "left top" should set the property value
+PASS e.style['offset'] = "none 30deg reverse" should set the property value
+PASS e.style['offset'] = "none 50px reverse 30deg" should set the property value
+FAIL e.style['offset'] = "none calc(20% + 10px) auto" should set the property value assert_equals: serialization should be canonical expected "none calc(20% + 10px)" but got "none calc(20% + 10px) auto"
+PASS e.style['offset'] = "none reverse" should set the property value
+FAIL e.style['offset'] = "path(\"M 0 0 H 1\") -200% auto" should set the property value assert_equals: serialization should be canonical expected "path(\"M 0 0 H 1\") -200%" but got "path(\"M 0 0 H 1\") -200% auto"
+PASS e.style['offset'] = "path(\"M 0 0 H 1\") -200%" should set the property value
+PASS e.style['offset'] = "path('M 0 0 H 1') 50px" should set the property value
+FAIL e.style['offset'] = "path(\"M 0 0 H 1\") auto" should set the property value assert_equals: serialization should be canonical expected "path(\"M 0 0 H 1\")" but got "path(\"M 0 0 H 1\") auto"
+FAIL e.style['offset'] = "path(\"M 0 0 H 1\") auto 0deg" should set the property value assert_equals: serialization should be canonical expected "path(\"M 0 0 H 1\")" but got "path(\"M 0 0 H 1\") auto 0deg"
+FAIL e.style['offset'] = "path(\"M 0 0 H 1\") auto 0rad" should set the property value assert_equals: serialization should be canonical expected "path(\"M 0 0 H 1\")" but got "path(\"M 0 0 H 1\") auto 0rad"
+PASS e.style['offset'] = "path(\"M 0 0 H 1\") auto 0.5turn" should set the property value
+PASS e.style['offset'] = "path('M 0 0 H 1') reverse 30deg 50px" should set the property value
+PASS e.style['offset'] = "path(\"M 0 0 H 1\")" should set the property value
+FAIL e.style['offset'] = "path('m 20 0 h 100') -7rad 8px / auto" should set the property value assert_equals: serialization should be canonical expected "path(\"m 20 0 h 100\") 8px -7rad" but got "path(\"m 20 0 h 100\") 8px -7rad / auto"
+PASS e.style['offset'] = "path('m 0 30 v 100') -7rad 8px / left top" should set the property value
+PASS e.style['offset'] = "path('m 0 0 h 100') -7rad 8px" should set the property value
+PASS e.style['offset'] = "path(\"M 0 0 H 100\") 100px 0deg" should set the property value
+PASS e.style['offset'] = "path(  'm 1 2   v 3.00 z')" should set the property value
+PASS e.style['offset'] = "ray(farthest-corner 90deg) 1%" should set the property value
+PASS e.style['offset'] = "ray(sides 0deg) 50% 90deg auto" should set the property value
+PASS e.style['offset'] = "right bottom / left top" should set the property value
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/motion/parsing/offset-shorthand-expected.txt b/third_party/blink/web_tests/external/wpt/css/motion/parsing/offset-shorthand-expected.txt
new file mode 100644
index 0000000..f588c32
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/motion/parsing/offset-shorthand-expected.txt
@@ -0,0 +1,21 @@
+This is a testharness.js-based test.
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should set offset-anchor
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should set offset-distance
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should set offset-path
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should set offset-position
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should set offset-rotate
+PASS e.style['offset'] = "left bottom ray(0rad closest-corner) 10px auto 30deg / right bottom" should not set unrelated longhands
+PASS e.style['offset'] = "top right / top left" should set offset-anchor
+FAIL e.style['offset'] = "top right / top left" should set offset-distance assert_equals: offset-distance should be canonical expected "0px" but got "initial"
+FAIL e.style['offset'] = "top right / top left" should set offset-path assert_equals: offset-path should be canonical expected "none" but got "initial"
+PASS e.style['offset'] = "top right / top left" should set offset-position
+FAIL e.style['offset'] = "top right / top left" should set offset-rotate assert_equals: offset-rotate should be canonical expected "auto" but got "initial"
+PASS e.style['offset'] = "top right / top left" should not set unrelated longhands
+FAIL e.style['offset'] = "path(\"M 0 0 H 2\") reverse 50%" should set offset-anchor assert_equals: offset-anchor should be canonical expected "auto" but got "initial"
+PASS e.style['offset'] = "path(\"M 0 0 H 2\") reverse 50%" should set offset-distance
+PASS e.style['offset'] = "path(\"M 0 0 H 2\") reverse 50%" should set offset-path
+FAIL e.style['offset'] = "path(\"M 0 0 H 2\") reverse 50%" should set offset-position assert_equals: offset-position should be canonical expected "auto" but got "initial"
+PASS e.style['offset'] = "path(\"M 0 0 H 2\") reverse 50%" should set offset-rotate
+PASS e.style['offset'] = "path(\"M 0 0 H 2\") reverse 50%" should not set unrelated longhands
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/document-policy/font-display/override-to-optional.tentative.html.ini b/third_party/blink/web_tests/external/wpt/document-policy/font-display/override-to-optional.tentative.html.ini
new file mode 100644
index 0000000..2ae8803
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/document-policy/font-display/override-to-optional.tentative.html.ini
@@ -0,0 +1,3 @@
+[override-to-optional.tentative.html]
+  expected:
+    if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/config-cross-origin-apis.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/config-cross-origin-apis.https.html
new file mode 100644
index 0000000..2d6b97e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/config-cross-origin-apis.https.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<title>Test default permission policy features gating (*)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+
+<body>
+<script>
+promise_test(async(t) => {
+  const key = token();
+
+  const fencedframe = attachFencedFrame(
+      await generateURNFromFledge(
+          "resources/config-cross-origin-apis-inner.https.html",
+          [key]));
+
+  // The fenced frame will send its attribution reporting result and then
+  // attempt to redirect to a remote origin page.
+  const resp = await nextValueFromServer(key);
+  assert_equals(resp, "0",
+      "The call to getNestedConfigs() should not have returned anything.");
+}, 'A fenced frame that navigates itself to a cross origin page loses ' +
+   'window.fence API access.');
+
+promise_test(async(t) => {
+  const key = token();
+
+  const fencedframe = attachFencedFrame(
+      await generateURNFromFledge(
+          "resources/config-embed-cross-origin-iframe.https.html",
+          [key]));
+
+  const resp = await nextValueFromServer(key);
+  assert_equals(resp, "0",
+      "The call to getNestedConfigs() should not have returned anything.");
+}, 'A cross-origin iframe inside a fenced frame does not get ' +
+    'window.fence API access.');
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-all.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-all.https.html
index f5084cf3..00044a4c 100644
--- a/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-all.https.html
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-all.https.html
@@ -22,6 +22,32 @@
       generator_api="sharedstorage");
 }, 'Cross-origin fenced frame loads when feature policies are *');
 
+promise_test(async(t) => {
+  // We do this test the "old fashioned way" because a redirect in a fenced
+  // frame remote context will cause it to lose its ability to communicate with
+  // the main page (which results in a timeout).
+  const page1_key = token();
+  const redirect_key = token();
+
+  const fencedframe = attachFencedFrame(
+      await generateURNFromFledge(
+          "resources/default-enabled-features-navigate.https.html",
+          [page1_key, redirect_key]));
+
+  // The fenced frame will send its attribution reporting result and then
+  // attempt to redirect to a remote origin page.
+  const page1_resp = await nextValueFromServer(page1_key);
+  assert_equals(page1_resp, "true",
+      "Attribution reporting should be enabled on the original page.");
+
+  // The fenced frame will send its attribution reporting result and then
+  // attempt to redirect to a remote origin page.
+  const redirect_resp = await nextValueFromServer(redirect_key);
+  assert_equals(redirect_resp, "true",
+      "Attribution reporting should be enabled on the redirected page.");
+}, 'A fenced frame that navigates itself to a cross origin page that allows feature policies ' +
+    'can still access the feature policies');
+
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-self.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-self.https.html
index 0360963a..c212a6f 100644
--- a/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-self.https.html
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/default-enabled-features-allow-self.https.html
@@ -11,10 +11,10 @@
 <body>
 <script>
 promise_test(async(t) => {
-  await runDefaultEnabledFeaturesTest(t, true, get_host_info().ORIGIN);
-  await runDefaultEnabledFeaturesTest(t, true, get_host_info().ORIGIN,
+  await runDefaultEnabledFeaturesTest(t, false, get_host_info().ORIGIN);
+  await runDefaultEnabledFeaturesTest(t, false, get_host_info().ORIGIN,
       generator_api="sharedstorage");
-}, 'Same-origin fenced frame loads when feature policies are self');
+}, 'Same-origin fenced frame does not when feature policies are self');
 
 promise_test(async(t) => {
   await runDefaultEnabledFeaturesTest(t, false, get_host_info().REMOTE_ORIGIN);
@@ -39,35 +39,6 @@
   }, []);
 }, 'Fenced frames default feature policies are set to not allow anything.');
 
-promise_test(async(t) => {
-  // We do this test the "old fashioned way" because a redirect in a fenced
-  // frame remote context will cause it to lose its ability to communicate with
-  // the main page (which results in a timeout).
-  const page1_key = token();
-  const redirect_key = token();
-
-  const fencedframe = attachFencedFrame(
-      await generateURNFromFledge(
-          "resources/default-enabled-features-redirect.https.html",
-          [page1_key, redirect_key]));
-
-  // The fenced frame will send its attribution reporting result and then
-  // attempt to redirect to a remote origin page.
-  const page1_resp = await nextValueFromServer(page1_key);
-  assert_equals(page1_resp, "true",
-      "Attribution reporting should be enabled on the original page.");
-
-  // There is no API to observe whether the document in the fenced frame loaded
-  // or not. Instead, set up a timeout. If the document loads, "FAIL" will be
-  // sent to the server. Otherwise "blocked" will be sent after 2 seconds.
-  const fencedframe_blocked = new Promise(r => t.step_timeout(r, 1000));
-  assert_equals("blocked", await Promise.any([
-    nextValueFromServer(redirect_key).then(() => "loaded"),
-    fencedframe_blocked.then(() => "blocked")
-  ]), "The fenced frame redirect should not be successful.");
-}, 'A fenced frame redirected to a page that does not allow feature policies ' +
-    'does not navigate');
-
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-apis-inner.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-apis-inner.https.html
new file mode 100644
index 0000000..79e9affe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-apis-inner.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<script src="utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<title>Fenced frame attribution reporting self navigation test</title>
+
+<body>
+<script>
+// This helper function will navigate a fenced frame to a remote origin page.
+// It will then check to make sure that window.fence APIs are not allowed after
+// the navigation.
+const [key] = parseKeylist();
+
+if (location.origin == get_host_info().ORIGIN) {
+  const configs = window.fence.getNestedConfigs();
+  const next_url = getRemoteOriginURL(generateURL(
+      "config-cross-origin-apis-inner.https.html", [key]));
+  location.href = next_url;
+} else {
+  const event = {
+    eventType: "reserved.top_navigation",
+    eventData: "data!",
+    destination: ["buyer"],
+  }
+
+  // These should gracefully fail without badmessaging the renderer.
+  window.fence.setReportEventDataForAutomaticBeacons(event);
+  window.fence.reportEvent(event);
+
+  const configs = window.fence.getNestedConfigs();
+
+  // Report how many configs were obtained. Cross-origin pages should not
+  // obtain any nested configs.
+  writeValueToServer(key, configs.length);
+}
+
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-apis-inner.https.html.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers
rename to third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-apis-inner.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-iframe.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-iframe.https.html
new file mode 100644
index 0000000..b6e390a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-iframe.https.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<script src="utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<title>Fenced frame attribution reporting self navigation test</title>
+
+<body>
+<script>
+// This helper function will navigate a child iframe to a remote origin page.
+// It will then check to make sure that window.fence APIs are not allowed after
+// the navigation. This code is meant to run in a fenced frame.
+const [key] = parseKeylist();
+
+const event = {
+  eventType: "reserved.top_navigation",
+  eventData: "data!",
+  destination: ["buyer"],
+}
+
+// These should gracefully fail without badmessaging the renderer.
+window.fence.setReportEventDataForAutomaticBeacons(event);
+window.fence.reportEvent(event);
+
+const configs = window.fence.getNestedConfigs();
+
+// Report how many configs were obtained. Cross-origin pages should not
+// obtain any nested configs.
+writeValueToServer(key, configs.length);
+
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-iframe.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers
copy to third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-cross-origin-iframe.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-embed-cross-origin-iframe.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-embed-cross-origin-iframe.https.html
new file mode 100644
index 0000000..f21afee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-embed-cross-origin-iframe.https.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<script src="utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<title>Fenced frame attribution reporting self navigation test</title>
+
+<body>
+<script>
+// This helper function will navigate a child iframe to a remote origin page.
+// It will then check to make sure that window.fence APIs are not allowed after
+// the navigation. This code is meant to run in a fenced frame.
+const [key] = parseKeylist();
+
+const configs = window.fence.getNestedConfigs();
+const next_url = getRemoteOriginURL(generateURL(
+    "config-cross-origin-iframe.https.html", [key]));
+attachIFrame(next_url);
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-embed-cross-origin-iframe.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers
copy to third_party/blink/web_tests/external/wpt/fenced-frame/resources/config-embed-cross-origin-iframe.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-navigate.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-navigate.https.html
new file mode 100644
index 0000000..6bfb033
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-navigate.https.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<script src="utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<title>Fenced frame attribution reporting self navigation test</title>
+
+<body>
+<script>
+// This helper function will navigate a fenced frame to a remote origin page.
+// That redirect should succeed to load and the permissions from the previous page should be in
+// place.
+const [key1, key2] = parseKeylist();
+
+const result_val = document.featurePolicy.allowsFeature('attribution-reporting');
+if (location.origin == get_host_info().ORIGIN) {
+  writeValueToServer(key1, result_val);
+
+  const next_url = getRemoteOriginURL(generateURL(
+      "default-enabled-features-navigate.https.html", [key1, key2]));
+  location.href = next_url;
+} else {
+  writeValueToServer(key2, result_val);
+}
+
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-navigate.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html.headers
copy to third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-navigate.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html b/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html
deleted file mode 100644
index 000b1eb6..0000000
--- a/third_party/blink/web_tests/external/wpt/fenced-frame/resources/default-enabled-features-redirect.https.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<script src="utils.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<title>Fenced frame attribution reporting redirect test</title>
-
-<body>
-<script>
-// This helper function will redirect a fenced frame to a remote origin page
-// while embedded in a frame that does not allow attribution reporting on
-// remote origins. That redirect should fail to load because of the attribution
-// reporting restriction.
-const [key1, key2] = parseKeylist();
-
-if (location.origin == get_host_info().ORIGIN) {
-  const result_val =
-      document.featurePolicy.allowsFeature('attribution-reporting') &
-      document.featurePolicy.allowsFeature('shared-storage');
-
-  writeValueToServer(key1,
-      document.featurePolicy.allowsFeature('attribution-reporting'));
-
-  const next_url = getRemoteOriginURL(generateURL(
-      "attribution-reporting-redirect.https.html", [key1, key2]));
-  location.href = next_url;
-} else {
-  // The redirect should have been unsuccessful, so we should not reach this
-  // point.
-  writeValueToServer(key2, "FAIL");
-}
-
-</script>
-</body>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html.ini
index eeba5ab..46f2992 100644
--- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html.ini
+++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash-twice.html.ini
@@ -3,4 +3,5 @@
     expected:
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): FAIL
       if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
-      if (product == "content_shell") and (os == "mac") and (port == "mac11"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): [FAIL, PASS]
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.clear.html
index 40685597..cb805b69 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.clear.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.copy.html
index ac022f95..d4e75b7b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.copy.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html
index 29cf9bc..6fded39e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-atop.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-in.html
index dc748df1..7277286d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-in.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-out.html
index ebf33f3..5860c3d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-out.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-over.html
index 6727e32..76bad843 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.destination-over.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.lighter.html
index abb1fe0..8d706df 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.lighter.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-atop.html
index 76ee7db0..cf3e449 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-atop.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-in.html
index 77cbb5e..dabcced 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-in.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-out.html
index 353dcd4..2fcf708 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-out.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-over.html
index 06516cb..b9dca65 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.source-over.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.xor.html
index 3bc6eb5..c252e17 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.canvas.xor.html
@@ -19,18 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-var canvas2 = document.createElement('canvas');
-canvas2.width = canvas.width;
-canvas2.height = canvas.height;
-var ctx2 = canvas2.getContext('2d');
-ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = canvas.width;
+  canvas2.height = canvas.height;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.clear.html
index 1757870..65cfd95 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.clear.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.copy.html
index ace0618..b38397a2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.copy.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-atop.html
index 45301941..79fb3af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-atop.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-in.html
index 2ace910..63e8d3ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-in.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-out.html
index 4b3acf9b..8392464 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-out.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-over.html
index 0b1f9b5..fc7f1ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.destination-over.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.lighter.html
index 4d2525d7..b3acab0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.lighter.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-atop.html
index db722a89..49c3eb0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-atop.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-in.html
index 4347924..afe92ba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-in.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-out.html
index 358dad3..43b352fb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-out.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-over.html
index 542f889..4973f8e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.source-over.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.xor.html
index edbf6b0..5239d6f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.clip.xor.html
@@ -19,17 +19,15 @@
 var t = async_test("fill() does not affect pixels outside the clip region.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.clear.html
index b9ab69b8..a44f8e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.clear.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.copy.html
index f32e03b..d3c972b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.copy.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-atop.html
index 2da0d19..7c6f9344 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-atop.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-in.html
index 63871b2..a2bf972 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-in.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-out.html
index 3d96b19..d0d08fa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-out.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-over.html
index 8e3dafb6..7ac98904 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.destination-over.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.lighter.html
index 6271a77..1df4c68 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.lighter.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-atop.html
index eb7d754..86833df6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-atop.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-in.html
index 0f2fdad9..0b6ca4b5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-in.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-out.html
index fd92085..31dfe47 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-out.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-over.html
index ce5b6c6..e396faa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.source-over.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.xor.html
index 68ce901d..d43742c27 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.image.xor.html
@@ -19,13 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
-_assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.drawImage(document.getElementById('yellow75.png'), 0, 0);
+  _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.clear.html
index e270df3..a946989 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.clear.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.copy.html
index 74d9ad5..14bee74 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.copy.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-atop.html
index 5e8f6047..d82fb44c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-in.html
index 246bdee5..6a491f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-in.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-out.html
index 7227cf4..bcc7f24 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-out.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-over.html
index 48671ce..6e634e6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.destination-over.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.lighter.html
index f869b6d..fddbe92 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.lighter.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,255,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,255,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-atop.html
index 14041236..4bb0e3d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-in.html
index 8f1cfcd..f8fee40 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-in.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-out.html
index 55522d5..2c9d0861 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-out.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-over.html
index 61945263..335987b1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.source-over.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.xor.html
index 431b8a3..d9da430 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.solid.xor.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.clear.html
index 606d925..de417ee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.clear.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.copy.html
index 58673a1..2048975 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.copy.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,191, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,191, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html
index 4d22016f..1da1f1a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,128,128,191, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,128,128,191, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-in.html
index e946c72..b0f8abe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-in.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,96, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-out.html
index 6e24825..badbfc4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-out.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,32, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,32, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-over.html
index 4c9c9fb..e8e0051 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.destination-over.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,146,109,223, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,146,109,223, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.lighter.html
index 4b3d148..6e4c42a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.lighter.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,128,191,255, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,128,191,255, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-atop.html
index 4b09877..d3d3fbd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-in.html
index 236f01b..27c66cb6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-in.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-out.html
index d597ff9..31bb6a2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-out.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-over.html
index e2f8a7f6..ee20f52 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.source-over.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,36,219,223, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,36,219,223, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.xor.html
index 83027e5..d181875 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.transparent.xor.html
@@ -19,14 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html
index cd443ae..9dfd650b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.copy.html
@@ -19,15 +19,13 @@
 var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html
index 9182124e..685a139 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-atop.html
@@ -19,15 +19,13 @@
 var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html
index 7906c15..9ca8021 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.destination-in.html
@@ -19,15 +19,13 @@
 var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html
index d46b7d4..9f1a5f9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-in.html
@@ -19,15 +19,13 @@
 var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html
index 08a02649..7653677 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.fill.source-out.html
@@ -19,15 +19,13 @@
 var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html
index e909612..61dd038 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.copy.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
-_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
+  _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html
index d257e2f2..440c832c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
-_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
+  _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html
index c3e3bc0..03e2e807 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.destination-in.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
-_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
+  _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html
index fbcb3c2..de2e5fa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-in.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
-_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
+  _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html
index 03979e6..5cb9b07 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.image.source-out.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
-_assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10);
+  _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html
index 4bdf1d21..cac66ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.copy.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var canvas2 = document.createElement('canvas');
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var canvas2 = document.createElement('canvas');
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html
index 093b6829..c7cecc2e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var canvas2 = document.createElement('canvas');
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var canvas2 = document.createElement('canvas');
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html
index dc613bd0..e090d7d4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.destination-in.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var canvas2 = document.createElement('canvas');
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var canvas2 = document.createElement('canvas');
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html
index 6616b4e..0436b40 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-in.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var canvas2 = document.createElement('canvas');
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var canvas2 = document.createElement('canvas');
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html
index fe2d70f2..efbc8ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.nocontext.source-out.html
@@ -19,14 +19,12 @@
 var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var canvas2 = document.createElement('canvas');
-ctx.drawImage(canvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var canvas2 = document.createElement('canvas');
+  ctx.drawImage(canvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html
index 4d6a91d..aaee920 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.copy.html
@@ -19,14 +19,12 @@
 var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html
index bf03da07..aded018f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-atop.html
@@ -19,14 +19,12 @@
 var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html
index f5a5fe3..e520e1ff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.destination-in.html
@@ -19,14 +19,12 @@
 var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html
index 385334d..bee6548 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-in.html
@@ -19,14 +19,12 @@
 var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html
index ae0be111..9478930 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/compositing/2d.composite.uncovered.pattern.source-out.html
@@ -19,14 +19,12 @@
 var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat');
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html
index 71a7cae..6f54844 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign center is the center of the em squares (not the bounding box)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'center';
-    ctx.fillText('DD', 50, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'center';
+      ctx.fillText('DD', 50, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
index 5bd7aa1..39751e1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign end with ltr is the right edge");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'end';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'end';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
index d37a29c..86645a9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign end with rtl is the left edge");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'end';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'end';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html
index 5a4bdb6a..cd01f25 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign left is the left of the first em square (not the bounding box)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'left';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'left';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html
index 29e009e..64207b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign right is the right of the last em square (not the bounding box)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'right';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'right';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
index d74a4b89..abf8086 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign start with ltr is the left edge");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'start';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'start';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
index 8dd671c..8c5b8198 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
@@ -26,22 +26,21 @@
 var t = async_test("textAlign start with rtl is the right edge");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'start';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'start';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
index 3652a21..d3f5df9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
@@ -19,13 +19,12 @@
 var t = async_test("fillText draws filled text");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.strokeStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('PASS', 5, 35);
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.strokeStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('PASS', 5, 35);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
index d33df3c..9705d288 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
@@ -19,13 +19,12 @@
 var t = async_test("fillText handles maxWidth correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
-_assertGreen(ctx, 100, 50);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
+  _assertGreen(ctx, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
index 50c6729..88dc1099 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
@@ -26,19 +26,18 @@
 var t = async_test("fillText handles maxWidth based on line size, not bounding box size");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('DD', 0, 37.5, 100);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('DD', 0, 37.5, 100);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
index 1e133a6..ed241de 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
@@ -26,19 +26,18 @@
 var t = async_test("fillText works on @font-face fonts");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#0f0';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#f00';
-    ctx.fillText('EEEE', -50, 37.5, 40);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#0f0';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#f00';
+      ctx.fillText('EEEE', -50, 37.5, 40);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
index 761679ec..96bb2e7d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
@@ -19,12 +19,11 @@
 var t = async_test("fillText handles maxWidth correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('PASS', 5, 35, 200);
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('PASS', 5, 35, 200);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
index b9febd1..ad50d576 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
@@ -19,13 +19,12 @@
 var t = async_test("fillText handles maxWidth correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, -1);
-_assertGreen(ctx, 100, 50);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, -1);
+  _assertGreen(ctx, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
index 0d7b8ff2..75866af40 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
@@ -19,13 +19,12 @@
 var t = async_test("fillText handles maxWidth correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', -100, 35, 90);
-_assertGreen(ctx, 100, 50);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', -100, 35, 90);
+  _assertGreen(ctx, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
index 64a3fdc..a175a57 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
@@ -19,13 +19,12 @@
 var t = async_test("fillText handles maxWidth correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, 0);
-_assertGreen(ctx, 100, 50);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, 0);
+  _assertGreen(ctx, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
index 07eeeb49..6917d7e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
@@ -19,13 +19,12 @@
 var t = async_test("fillText respects Right-To-Left Override characters");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.strokeStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.strokeStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
index cb1e7db..94ed31d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
@@ -19,23 +19,22 @@
 var t = async_test("fillText does not start a new path or subpath");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.moveTo(0, 0);
-ctx.lineTo(100, 0);
+  ctx.moveTo(0, 0);
+  ctx.lineTo(100, 0);
 
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('FAIL', 5, 35);
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('FAIL', 5, 35);
 
-ctx.lineTo(100, 50);
-ctx.lineTo(0, 50);
-ctx.fillStyle = '#0f0';
-ctx.fill();
+  ctx.lineTo(100, 50);
+  ctx.lineTo(0, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 5,45, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 5,45, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html
index 9adcf356..cb7d6984 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html
@@ -26,19 +26,18 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '67px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '67px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
index 6ccb0c0..6c34739 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
@@ -25,19 +25,18 @@
 var t = async_test("@font-face fonts should work even if they are not used in the page");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '67px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '67px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
index 457c48c..d6d33a0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
@@ -25,20 +25,19 @@
 var t = async_test("Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.font = '67px CanvasTest';
-ctx.fillStyle = '#0f0';
-ctx.fillText('AA', 0, 50);
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.font = '67px CanvasTest';
+  ctx.fillStyle = '#0f0';
+  ctx.fillText('AA', 0, 50);
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
index f27c2a7..1840ef0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
@@ -19,17 +19,16 @@
 var t = async_test("Stroked and filled text should have exactly the same kerning so it overlaps");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.strokeStyle = '#0f0';
-ctx.lineWidth = 3;
-ctx.font = '20px Arial, sans-serif';
-ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
-ctx.fillText('ToToToToToToTo', -50, 45);
-ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
-ctx.strokeText('ToToToToToToTo', -50, 45);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.strokeStyle = '#0f0';
+  ctx.lineWidth = 3;
+  ctx.font = '20px Arial, sans-serif';
+  ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
+  ctx.fillText('ToToToToToToTo', -50, 45);
+  ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
+  ctx.strokeText('ToToToToToToTo', -50, 45);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
index 26f8114e..2c5d471 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
@@ -26,17 +26,16 @@
 var t = async_test("U+0020 is rendered the correct size (1em wide)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E EE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E EE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
index e105ec35..00877c6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
@@ -26,17 +26,16 @@
 var t = async_test("Non-space characters are not converted to U+0020 and collapsed");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E\x0b EE', -150, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E\x0b EE', -150, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
index 4481a0d2..1db0f06 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
@@ -19,14 +19,13 @@
 var t = async_test("strokeText draws stroked text");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#0f0';
-ctx.fillStyle = '#f00';
-ctx.lineWidth = 1;
-ctx.font = '35px Arial, sans-serif';
-ctx.strokeText('PASS', 5, 35);
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#0f0';
+  ctx.fillStyle = '#f00';
+  ctx.lineWidth = 1;
+  ctx.font = '35px Arial, sans-serif';
+  ctx.strokeText('PASS', 5, 35);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
index 728765c..76a3647 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
@@ -19,24 +19,23 @@
 var t = async_test("strokeText does not start a new path or subpath");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.moveTo(0, 0);
-ctx.lineTo(100, 0);
+  ctx.moveTo(0, 0);
+  ctx.lineTo(100, 0);
 
-ctx.font = '35px Arial, sans-serif';
-ctx.strokeStyle = '#f00';
-ctx.strokeText('FAIL', 5, 35);
+  ctx.font = '35px Arial, sans-serif';
+  ctx.strokeStyle = '#f00';
+  ctx.strokeText('FAIL', 5, 35);
 
-ctx.lineTo(100, 50);
-ctx.lineTo(0, 50);
-ctx.fillStyle = '#0f0';
-ctx.fill();
+  ctx.lineTo(100, 50);
+  ctx.lineTo(0, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 5,45, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 5,45, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html
index f6c3826..6de9c6eb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html
@@ -19,15 +19,14 @@
 var t = async_test("Testing basic functionalities of fontKerning for canvas");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
-ctx.fontKerning = "normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-width_normal = ctx.measureText("TAWATAVA").width;
-ctx.fontKerning = "none";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-width_none = ctx.measureText("TAWATAVA").width;
-_assert(width_normal < width_none, "width_normal < width_none");
-
+  _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
+  ctx.fontKerning = "normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  width_normal = ctx.measureText("TAWATAVA").width;
+  ctx.fontKerning = "none";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  width_none = ctx.measureText("TAWATAVA").width;
+  _assert(width_normal < width_none, "width_normal < width_none");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html
index db62fbe..fd91a09 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html
@@ -19,37 +19,36 @@
 var t = async_test("Testing basic functionalities of fontKerning for canvas");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
-ctx.fontKerning = "Normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "noRmal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "NoRMal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "NORMAL";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
+  ctx.fontKerning = "Normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "noRmal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "NoRMal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "NORMAL";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
 
-ctx.fontKerning = "None";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "none";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "nOne";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "nonE";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "Auto";
-ctx.fontKerning = "NONE";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-
+  ctx.fontKerning = "None";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "none";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "nOne";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "nonE";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "Auto";
+  ctx.fontKerning = "NONE";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html
index 6fdd145..cf0a3230 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html
@@ -19,56 +19,55 @@
 var t = async_test("Testing basic functionalities of fontKerning for canvas");
 _addTest(function(canvas, ctx) {
 
-// Setting fontVariantCaps with lower cases
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  // Setting fontVariantCaps with lower cases
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "normal";
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  ctx.fontVariantCaps = "normal";
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "small-caps";
-_assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
+  ctx.fontVariantCaps = "small-caps";
+  _assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
 
-ctx.fontVariantCaps = "all-small-caps";
-_assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
+  ctx.fontVariantCaps = "all-small-caps";
+  _assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
 
-ctx.fontVariantCaps = "petite-caps";
-_assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
+  ctx.fontVariantCaps = "petite-caps";
+  _assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
 
-ctx.fontVariantCaps = "all-petite-caps";
-_assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
+  ctx.fontVariantCaps = "all-petite-caps";
+  _assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
 
-ctx.fontVariantCaps = "unicase";
-_assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
+  ctx.fontVariantCaps = "unicase";
+  _assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
 
-ctx.fontVariantCaps = "titling-caps";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  ctx.fontVariantCaps = "titling-caps";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
-// Setting fontVariantCaps with lower cases and upper cases word.
-ctx.fontVariantCaps = "nORmal";
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  // Setting fontVariantCaps with lower cases and upper cases word.
+  ctx.fontVariantCaps = "nORmal";
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "smaLL-caps";
-_assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
+  ctx.fontVariantCaps = "smaLL-caps";
+  _assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
 
-ctx.fontVariantCaps = "all-small-CAPS";
-_assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
+  ctx.fontVariantCaps = "all-small-CAPS";
+  _assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
 
-ctx.fontVariantCaps = "pEtitE-caps";
-_assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
+  ctx.fontVariantCaps = "pEtitE-caps";
+  _assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
 
-ctx.fontVariantCaps = "All-Petite-Caps";
-_assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
+  ctx.fontVariantCaps = "All-Petite-Caps";
+  _assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
 
-ctx.fontVariantCaps = "uNIcase";
-_assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
+  ctx.fontVariantCaps = "uNIcase";
+  _assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
 
-ctx.fontVariantCaps = "titling-CAPS";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  ctx.fontVariantCaps = "titling-CAPS";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
-// Setting fontVariantCaps with non-existing font variant.
-ctx.fontVariantCaps = "abcd";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
-
+  // Setting fontVariantCaps with non-existing font variant.
+  ctx.fontVariantCaps = "abcd";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html
index 9bf2440..a0b8340 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html
@@ -19,24 +19,23 @@
 var t = async_test("Testing letter spacing and word spacing with invalid units");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-
-function test_word_spacing(value) {
-  ctx.wordSpacing = value;
-  ctx.letterSpacing = value;
-  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-}
-test_word_spacing('0s');
-test_word_spacing('1min');
-test_word_spacing('1deg');
-test_word_spacing('1pp');
-test_word_spacing('initial');
-test_word_spacing('inherit');
-test_word_spacing('normal');
-test_word_spacing('none');
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
+  function test_word_spacing(value) {
+    ctx.wordSpacing = value;
+    ctx.letterSpacing = value;
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  }
+  test_word_spacing('0s');
+  test_word_spacing('1min');
+  test_word_spacing('1deg');
+  test_word_spacing('1pp');
+  test_word_spacing('initial');
+  test_word_spacing('inherit');
+  test_word_spacing('normal');
+  test_word_spacing('none');
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html
index 3b88ab6..d7543e5d9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html
@@ -19,27 +19,26 @@
 var t = async_test("Set letter spacing and word spacing to font dependent value and verify it works after font change.");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-// Get the width for 'Hello World' at default size, 10px.
-var width_normal = ctx.measureText('Hello World').width;
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  // Get the width for 'Hello World' at default size, 10px.
+  var width_normal = ctx.measureText('Hello World').width;
 
-ctx.letterSpacing = '1em';
-_assertSame(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'");
-// 1em = 10px. Add 10px after each letter in "Hello World",
-// makes it 110px longer.
-var width_with_spacing = ctx.measureText('Hello World').width;
-assert_approx_equals(width_with_spacing, width_normal + 110, 0.1, "letterSpacing incorrect before font change");
+  ctx.letterSpacing = '1em';
+  _assertSame(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'");
+  // 1em = 10px. Add 10px after each letter in "Hello World",
+  // makes it 110px longer.
+  var width_with_spacing = ctx.measureText('Hello World').width;
+  assert_approx_equals(width_with_spacing, width_normal + 110, 0.1, "letterSpacing incorrect before font change");
 
-// Changing font to 20px. Without resetting the spacing, 1em letterSpacing
-// is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
-ctx.font = '20px serif';
-width_with_spacing = ctx.measureText('Hello World').width;
-// Now calculate the reference spacing for "Hello World" with no spacing.
-ctx.letterSpacing = '0em';
-width_normal = ctx.measureText('Hello World').width;
-assert_approx_equals(width_with_spacing, width_normal + 220, 0.1, "letterSpacing incorrect after font change");
-
+  // Changing font to 20px. Without resetting the spacing, 1em letterSpacing
+  // is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
+  ctx.font = '20px serif';
+  width_with_spacing = ctx.measureText('Hello World').width;
+  // Now calculate the reference spacing for "Hello World" with no spacing.
+  ctx.letterSpacing = '0em';
+  width_normal = ctx.measureText('Hello World').width;
+  assert_approx_equals(width_with_spacing, width_normal + 220, 0.1, "letterSpacing incorrect after font change");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html
index ba8656e..9b0ce16e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html
@@ -19,35 +19,34 @@
 var t = async_test("Testing letter spacing and word spacing");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-var width_normal = ctx.measureText('Hello World').width;
-
-function test_letter_spacing(value, difference_spacing, epsilon) {
-  ctx.letterSpacing = value;
-  _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
   _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-  width_with_letter_spacing = ctx.measureText('Hello World').width;
-  assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
-}
+  var width_normal = ctx.measureText('Hello World').width;
 
-// The first value is the letter Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 11 letters
-// in 'hello world', so the length difference is always letterSpacing * 11.
-// and the third value is the acceptable differencee for the length change,
-// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
-test_cases = [['3px', 33, 0.1],
-              ['5px', 55, 0.1],
-              ['-2px', -22, 0.1],
-              ['1em', 110, 0.1],
-              ['1in', 1056, 0.1],
-              ['-0.1cm', -41.65, 0.2],
-              ['-0.6mm', -24,95, 0.2]]
+  function test_letter_spacing(value, difference_spacing, epsilon) {
+    ctx.letterSpacing = value;
+    _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    width_with_letter_spacing = ctx.measureText('Hello World').width;
+    assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_letter_spacing(test_case[0], test_case[1], test_case[2]);
-}
+  // The first value is the letter Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 11 letters
+  // in 'hello world', so the length difference is always letterSpacing * 11.
+  // and the third value is the acceptable differencee for the length change,
+  // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
+  test_cases = [['3px', 33, 0.1],
+                ['5px', 55, 0.1],
+                ['-2px', -22, 0.1],
+                ['1em', 110, 0.1],
+                ['1in', 1056, 0.1],
+                ['-0.1cm', -41.65, 0.2],
+                ['-0.6mm', -24,95, 0.2]]
 
+  for (const test_case of test_cases) {
+    test_letter_spacing(test_case[0], test_case[1], test_case[2]);
+  }
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html
index f197d22..5ba2020 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html
@@ -19,19 +19,18 @@
 var t = async_test("Testing letter spacing and word spacing with nonfinite inputs");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-
-function test_word_spacing(value) {
-  ctx.wordSpacing = value;
-  ctx.letterSpacing = value;
-  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-}
-test_word_spacing(NaN);
-test_word_spacing(Infinity);
-test_word_spacing(-Infinity);
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
+  function test_word_spacing(value) {
+    ctx.wordSpacing = value;
+    ctx.letterSpacing = value;
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  }
+  test_word_spacing(NaN);
+  test_word_spacing(Infinity);
+  test_word_spacing(-Infinity);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html
index b5a411e..82a0fe3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html
@@ -19,27 +19,26 @@
 var t = async_test("Testing letter spacing and word spacing");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-ctx.letterSpacing = '3px';
-_assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  ctx.letterSpacing = '3px';
+  _assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-ctx.wordSpacing = '5px';
-_assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
-_assertSame(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'");
+  ctx.wordSpacing = '5px';
+  _assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
+  _assertSame(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'");
 
-ctx.letterSpacing = '-1px';
-ctx.wordSpacing = '-1px';
-_assertSame(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'");
-_assertSame(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'");
+  ctx.letterSpacing = '-1px';
+  ctx.wordSpacing = '-1px';
+  _assertSame(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'");
+  _assertSame(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'");
 
-ctx.letterSpacing = '1PX';
-ctx.wordSpacing = '1EM';
-_assertSame(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'");
-_assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
-
+  ctx.letterSpacing = '1PX';
+  ctx.wordSpacing = '1EM';
+  _assertSame(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'");
+  _assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html
index f6634ee..03b35dfa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html
@@ -19,38 +19,37 @@
 var t = async_test("Testing basic functionalities of textRendering in Canvas");
 _addTest(function(canvas, ctx) {
 
-// Setting textRendering with lower cases
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  // Setting textRendering with lower cases
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "auto";
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  ctx.textRendering = "auto";
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "optimizespeed";
-_assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
+  ctx.textRendering = "optimizespeed";
+  _assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
 
-ctx.textRendering = "optimizelegibility";
-_assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
+  ctx.textRendering = "optimizelegibility";
+  _assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
 
-ctx.textRendering = "geometricprecision";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  ctx.textRendering = "geometricprecision";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
-// Setting textRendering with lower cases and upper cases word.
-ctx.textRendering = "aUto";
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  // Setting textRendering with lower cases and upper cases word.
+  ctx.textRendering = "aUto";
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "OPtimizeSpeed";
-_assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
+  ctx.textRendering = "OPtimizeSpeed";
+  _assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
 
-ctx.textRendering = "OPtimizELEgibility";
-_assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
+  ctx.textRendering = "OPtimizELEgibility";
+  _assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
 
-ctx.textRendering = "GeometricPrecision";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  ctx.textRendering = "GeometricPrecision";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
-// Setting textRendering with non-existing font variant.
-ctx.textRendering = "abcd";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
-
+  // Setting textRendering with non-existing font variant.
+  ctx.textRendering = "abcd";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html
index d29bc8e..8bad1a0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html
@@ -19,27 +19,26 @@
 var t = async_test("Set word spacing and word spacing to font dependent value and verify it works after font change.");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-// Get the width for 'Hello World, again' at default size, 10px.
-var width_normal = ctx.measureText('Hello World, again').width;
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  // Get the width for 'Hello World, again' at default size, 10px.
+  var width_normal = ctx.measureText('Hello World, again').width;
 
-ctx.wordSpacing = '1em';
-_assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
-// 1em = 10px. Add 10px after each word in "Hello World, again",
-// makes it 20px longer.
-var width_with_spacing = ctx.measureText('Hello World, again').width;
-_assertSame(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20");
+  ctx.wordSpacing = '1em';
+  _assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
+  // 1em = 10px. Add 10px after each word in "Hello World, again",
+  // makes it 20px longer.
+  var width_with_spacing = ctx.measureText('Hello World, again').width;
+  _assertSame(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20");
 
-// Changing font to 20px. Without resetting the spacing, 1em wordSpacing
-// is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
-ctx.font = '20px serif';
-width_with_spacing = ctx.measureText('Hello World, again').width;
-// Now calculate the reference spacing for "Hello World, again" with no spacing.
-ctx.wordSpacing = '0em';
-width_normal = ctx.measureText('Hello World, again').width;
-_assertSame(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40");
-
+  // Changing font to 20px. Without resetting the spacing, 1em wordSpacing
+  // is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
+  ctx.font = '20px serif';
+  width_with_spacing = ctx.measureText('Hello World, again').width;
+  // Now calculate the reference spacing for "Hello World, again" with no spacing.
+  ctx.wordSpacing = '0em';
+  width_normal = ctx.measureText('Hello World, again').width;
+  _assertSame(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html
index 4898c23e..d4f10032e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html
@@ -19,35 +19,34 @@
 var t = async_test("Testing if word spacing is working properly");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-var width_normal = ctx.measureText('Hello World, again').width;
-
-function test_word_spacing(value, difference_spacing, epsilon) {
-  ctx.wordSpacing = value;
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-  _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
-  width_with_word_spacing = ctx.measureText('Hello World, again').width;
-  assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
-}
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  var width_normal = ctx.measureText('Hello World, again').width;
 
-// The first value is the word Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 2 words
-// in 'Hello World, again', so the length difference is always wordSpacing * 2.
-// and the third value is the acceptable differencee for the length change,
-// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
-test_cases = [['3px', 6, 0.1],
-              ['5px', 10, 0.1],
-              ['-2px', -4, 0.1],
-              ['1em', 20, 0.1],
-              ['1in', 192, 0.1],
-              ['-0.1cm', -7.57, 0.2],
-              ['-0.6mm', -4.54, 0.2]]
+  function test_word_spacing(value, difference_spacing, epsilon) {
+    ctx.wordSpacing = value;
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+    _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
+    width_with_word_spacing = ctx.measureText('Hello World, again').width;
+    assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_word_spacing(test_case[0], test_case[1], test_case[2]);
-}
+  // The first value is the word Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 2 words
+  // in 'Hello World, again', so the length difference is always wordSpacing * 2.
+  // and the third value is the acceptable differencee for the length change,
+  // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
+  test_cases = [['3px', 6, 0.1],
+                ['5px', 10, 0.1],
+                ['-2px', -4, 0.1],
+                ['1em', 20, 0.1],
+                ['1in', 192, 0.1],
+                ['-0.1cm', -7.57, 0.2],
+                ['-0.6mm', -4.54, 0.2]]
 
+  for (const test_case of test_cases) {
+    test_word_spacing(test_case[0], test_case[1], test_case[2]);
+  }
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
index 44cff25..2317493 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
@@ -26,39 +26,38 @@
 var t = async_test("Testing actualBoundingBox");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        ctx.direction = 'ltr';
-        ctx.align = 'left'
-        ctx.baseline = 'alphabetic'
-        // Different platforms may render text slightly different.
-        // Values that are nominally expected to be zero might actually vary by a pixel or so
-        // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation.
-        _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
-        _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
-        _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
-        _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          ctx.direction = 'ltr';
+          ctx.align = 'left'
+          ctx.baseline = 'alphabetic'
+          // Different platforms may render text slightly different.
+          // Values that are nominally expected to be zero might actually vary by a pixel or so
+          // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation.
+          _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
+          _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
+          _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
+          _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
 
-        _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
-        _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
-        _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
-        _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
-        _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
-        _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
-        _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
-        _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
+          _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
+          _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
+          _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
+          _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
+          _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
+          _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
+          _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
+          _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
 
-        _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
-        _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
-        _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
-        _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
-    }), 500);
-});
-
+          _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
+          _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
+          _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
+          _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html
index e7039c7..84d0af4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html
@@ -26,31 +26,30 @@
 var t = async_test("Testing width advances");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        ctx.direction = 'ltr';
-        ctx.align = 'left'
-        // Some platforms may return '-0'.
-        _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
-        // Different platforms may render text slightly different.
-        _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
-        _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
-        _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
-        _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          ctx.direction = 'ltr';
+          ctx.align = 'left'
+          // Some platforms may return '-0'.
+          _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
+          // Different platforms may render text slightly different.
+          _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
+          _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
+          _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
+          _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
 
-        var tm = ctx.measureText('Hello');
-        _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
-        _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
-        _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
-        _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
-        _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
-    }), 500);
-});
-
+          var tm = ctx.measureText('Hello');
+          _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
+          _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
+          _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
+          _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
+          _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html
index 812949e2..95fac52 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html
@@ -26,24 +26,23 @@
 var t = async_test("Testing baselines");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-     step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        ctx.direction = 'ltr';
-        ctx.align = 'left'
-        _assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
-        _assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
-        _assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+       step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          ctx.direction = 'ltr';
+          ctx.align = 'left'
+          _assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
+          _assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
+          _assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
 
-        _assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
-        _assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
-        _assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
-    }), 500);
-});
-
+          _assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
+          _assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
+          _assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html
index 4387b6c..a00eb7e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html
@@ -19,14 +19,13 @@
 var t = async_test("Measurement should follow text direction");
 _addTest(function(canvas, ctx) {
 
-ctx.direction = "ltr";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  ctx.direction = "ltr";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
-ctx.direction = "rtl";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
-
+  ctx.direction = "rtl";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html
index 65c03093..88f594c7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html
@@ -19,14 +19,13 @@
 var t = async_test("Measurement should be related to textAlignment");
 _addTest(function(canvas, ctx) {
 
-ctx.textAlign = "right";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
+  ctx.textAlign = "right";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
 
-ctx.textAlign = "left"
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
-
+  ctx.textAlign = "left"
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
index 7a4b779..d1085ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
@@ -26,24 +26,23 @@
 var t = async_test("Testing emHeights");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-     step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        ctx.direction = 'ltr';
-        ctx.align = 'left'
-        _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
-        _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
-        _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+       step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          ctx.direction = 'ltr';
+          ctx.align = 'left'
+          _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
+          _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
+          _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
 
-        _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
-        _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
-        _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
-    }), 500);
-});
-
+          _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
+          _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
+          _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
index 7af141a..80cbaba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
@@ -26,22 +26,21 @@
 var t = async_test("Testing fontBoundingBox for font ahem");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("Ahem", "/fonts/Ahem.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px Ahem';
-        ctx.direction = 'ltr';
-        ctx.align = 'left'
-        _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40");
-        _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10");
+  deferTest();
+  var f = new FontFace("Ahem", "/fonts/Ahem.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px Ahem';
+          ctx.direction = 'ltr';
+          ctx.align = 'left'
+          _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40");
+          _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10");
 
-        _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40");
-        _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10");
-    }), 500);
-});
-
+          _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40");
+          _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
index 6cdd7b8..2737d2d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
@@ -26,22 +26,21 @@
 var t = async_test("Testing fontBoundingBox");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        ctx.direction = 'ltr';
-        ctx.align = 'left'
-        _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
-        _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          ctx.direction = 'ltr';
+          ctx.align = 'left'
+          _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
+          _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
 
-        _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
-        _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
-    }), 500);
-});
-
+          _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
+          _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html
index 539eab0..a92d5cb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html
@@ -26,12 +26,11 @@
 var t = async_test("Measurement should follow canvas direction instead text direction");
 _addTest(function(canvas, ctx) {
 
-metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
-
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
index 4c528ed..1d5502d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
@@ -26,21 +26,20 @@
 var t = async_test("The width of character is same as font used");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
-        _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
-        _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
+          _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
+          _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
 
-        ctx.font = '100px CanvasTest';
-        _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
-    }), 500);
-});
-
+          ctx.font = '100px CanvasTest';
+          _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
index 83686314..ce9e80b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
@@ -26,16 +26,15 @@
 var t = async_test("The empty string has zero width");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
-    }), 500);
-});
-
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html
index cc48c2e..481d6fe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html
@@ -19,32 +19,31 @@
 var t = async_test("CSSHSL works as color input");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5);
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 64,191,191,255, 3);
+  ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5);
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 64,191,191,255, 3);
 
-const color = new CSSHSL(CSS.deg(180), 1, 1);
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-color.l = 0.5;
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, '#00ffff', "ctx.fillStyle", "'#00ffff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,255,255);
+  const color = new CSSHSL(CSS.deg(180), 1, 1);
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
+  color.l = 0.5;
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, '#00ffff', "ctx.fillStyle", "'#00ffff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,255,255);
 
-ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL();
-_assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,0,255,255);
+  ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL();
+  _assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,0,255,255);
 
-color.h = CSS.deg(120);
-color.s = 1;
-color.l = 0.5;
-ctx.fillStyle = color;
-ctx.fillRect(0, 0, 100, 50);
-
+  color.h = CSS.deg(120);
+  color.s = 1;
+  color.l = 0.5;
+  ctx.fillStyle = color;
+  ctx.fillRect(0, 0, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html
index 0e3fcd4f..cfdb603 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.CSSRGB.html
@@ -19,41 +19,40 @@
 var t = async_test("CSSRGB works as color input");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = new CSSRGB(1, 0, 1);
-_assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,0,255,255);
+  ctx.fillStyle = new CSSRGB(1, 0, 1);
+  _assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,0,255,255);
 
-const color = new CSSRGB(0, CSS.percent(50), 0);
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, '#008000', "ctx.fillStyle", "'#008000'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,128,0,255);
-color.g = 0;
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
+  const color = new CSSRGB(0, CSS.percent(50), 0);
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, '#008000', "ctx.fillStyle", "'#008000'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,128,0,255);
+  color.g = 0;
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
 
-color.alpha = 0;
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
-ctx.reset();
-color.alpha = 0.5;
-ctx.fillStyle = color;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,128);
+  color.alpha = 0;
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
+  ctx.reset();
+  color.alpha = 0.5;
+  ctx.fillStyle = color;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,128);
 
-ctx.fillStyle = new CSSHSL(CSS.deg(0), 1, 1).toRGB();
-_assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
+  ctx.fillStyle = new CSSHSL(CSS.deg(0), 1, 1).toRGB();
+  _assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
 
-color.alpha = 1;
-color.g = 1;
-ctx.fillStyle = color;
-ctx.fillRect(0, 0, 100, 50);
-
+  color.alpha = 1;
+  color.g = 1;
+  ctx.fillStyle = color;
+  ctx.fillRect(0, 0, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.default.html
index 31e051a..1bd3e2d4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.default.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
-
+  _assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html
index 4101bf4..423293e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = 'rgba(255,255,255,0.5)';
-_assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'");
-
+  ctx.fillStyle = 'rgba(255,255,255,0.5)';
+  _assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
index 9f178473..ec63d76 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = 'rgba(255,255,255,0.45)';
-assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/);
-
+  ctx.fillStyle = 'rgba(255,255,255,0.45)';
+  assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.solid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.solid.html
index 9361389..bcdd57a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.solid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.solid.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#fa0';
-_assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'");
-
+  ctx.fillStyle = '#fa0';
+  _assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.transparent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
index fd381eb8..21931aa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = 'rgba(0,0,0,0)';
-_assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
-
+  ctx.fillStyle = 'rgba(0,0,0,0)';
+  _assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
index 16bb923..9fb83063 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
@@ -19,13 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillStyle = 'invalid';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillStyle = 'invalid';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
index d2183683..84d8fbd3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
@@ -19,13 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillStyle = null;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillStyle = null;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
index 12a338e..87b5bc93 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
index 71db4187a..746c358 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
index 6c84e94..b8a9cd5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
index d379657..d5e58b9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
index 62ad91f..85bbb802 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
index 9c879828..154bdcd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
index c3e2334..5cf81e4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
index b9baf11..17d0782df 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
index 274585c3..2f4b1e8e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
index e4a5cbc09..bc70e21 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
index 976bf71..7f77498 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
index 16100e6a..c33a50a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
index eb0158e..3d0cafc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
index c1b7c56..a70613b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
index 06aa355..8c46d88 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
index eb66e27..b6b4760 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
index 0c13368..7933d47 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
index fd2cedd5..8a4e29d4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
index 7fa79bf..632b7f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255.0, 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255.0, 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
index 89ef218..1d3e683 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
index 6be6f06..8a6f3523 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
index 23c69bd..1fdf9ecf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
index b853fbf35..a1d99d5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0 / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0 / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
index 8a62fa2..ad2c5f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0 / 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0 / 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
index 66834dd..f394dbf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255.0, 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255.0, 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
index 4a4cb78c..5529bc1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
index 51e9468..82047a56 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
index 07a65ac..5fea546 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
index 2f798f47..d048566 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0 / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0 / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
index 5ca7564..28feb2e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0 / 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0 / 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
index e48d05c..a1481e36 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
@@ -19,12 +19,11 @@
 var t = async_test("currentColor is computed from the canvas element");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('style', 'color: #0f0');
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'currentColor';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  canvas.setAttribute('style', 'color: #0f0');
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'currentColor';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
index f298af5..2f4d0fe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
@@ -19,13 +19,12 @@
 var t = async_test("currentColor is computed when the attribute is set, not when it is painted");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('style', 'color: #0f0');
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'currentColor';
-canvas.setAttribute('style', 'color: #f00');
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  canvas.setAttribute('style', 'color: #0f0');
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'currentColor';
+  canvas.setAttribute('style', 'color: #f00');
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
index 2642b888..96b070c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
@@ -19,24 +19,23 @@
 var t = async_test("currentColor is solid black when the canvas element is not in a document");
 _addTest(function(canvas, ctx) {
 
-// Try not to let it undetectably incorrectly pick up opaque-black
-// from other parts of the document:
-document.body.parentNode.setAttribute('style', 'color: #f00');
-document.body.setAttribute('style', 'color: #f00');
-canvas.setAttribute('style', 'color: #f00');
+  // Try not to let it undetectably incorrectly pick up opaque-black
+  // from other parts of the document:
+  document.body.parentNode.setAttribute('style', 'color: #f00');
+  document.body.setAttribute('style', 'color: #f00');
+  canvas.setAttribute('style', 'color: #f00');
 
-var canvas2 = document.createElement('canvas');
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillStyle = 'currentColor';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.drawImage(canvas2, 0, 0);
+  var canvas2 = document.createElement('canvas');
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillStyle = 'currentColor';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.drawImage(canvas2, 0, 0);
 
-document.body.parentNode.removeAttribute('style');
-document.body.removeAttribute('style');
+  document.body.parentNode.removeAttribute('style');
+  document.body.removeAttribute('style');
 
-_assertPixel(canvas, 50,25, 0,0,0,255);
-
+  _assertPixel(canvas, 50,25, 0,0,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
index 9fbb275..017bfc8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
index fc79cc7..c8704edb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#0f0f';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#0f0f';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
index b946c30..9644a46 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#00fF00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#00fF00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
index 5865e98..b2dd069 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#00ff00ff';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#00ff00ff';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
index e169904..ceb3da5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
index ec61f58..22e67e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl( -240 , 100% , 50% )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl( -240 , 100% , 50% )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
index 0ec6fce..e182952 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(360120, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(360120, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
index b3119da..b320c1c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(-360240, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(-360240, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
index 1867bba..1264f626 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
index 7a5e764..e0fc787 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(+120, +100%, +50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(+120, +100%, +50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
index f623320..59d66c3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 200%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 200%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
index 0293acd..1a1939e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, -200%, 49.9%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 127,127,127,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, -200%, 49.9%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 127,127,127,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
index 2ea1a51..56f3a0a8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, 200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, 200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
index add688e..af9d11e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, -200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, -200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
index 38427cf..dbc738f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
index 01a83676..aa21789 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
index b7914e3..2acac26e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 200%, 50%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 200%, 50%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
index 94b6237..0f32fb54 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 127,127,127,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 127,127,127,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
index bc2466b..4bc134a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 200%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 200%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
index 35c0d00..f8b2382 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, -200%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, -200%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
index 13fac2f..9c5e225 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 50%, 2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 50%, 2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
index ba76ad6a..153515e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 0%, -2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 0%, -2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
index ae54397..65d0d20 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'limE';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'limE';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
index 1850125..4046f82 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
index b4fd4a6..2075f8e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
index 224da3a..53bbf6c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
index 0e4b77b..e8be93b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
index 08e03db1..b8938ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
index 62f8295..7104ca6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
index d6b78e9..c340e74 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
index c571740..3f94ec1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
index 01ff94e8b..6950359 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
index 2b782e35..96af643e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
index 54849f6..a2691ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
index 97d5748..eb5f566 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
index 666c3c3..7de9dd4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
index fefe336..20b889c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
index bf12006..908545c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
index a4e4e90..851314f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
index 04c67e3..9aba392 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
index 7027db50..361db1de 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
index ae7a32a5..7df089d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
index d355309..6089675b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
index 0b80566b..488daf4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
index 02b75c3..ec0def2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
index 6a73bc1..2b07b8d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
index 3a03959e..f886d4a6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
index 38a01fc..153f9cb5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
index 6783a18..7a2bd4f9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
index 8f9137e4..8ad0f54 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
index 56c7228..780b83b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
index df84f68..ad5944f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
index 2a7d0753..948a9d8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
index 5d22135c..7a4bdb3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
index f1a29cd..4164de3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
index e48d086e..109a22cd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
index 80433bc..acdd4d4c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
index e1a49f9..292f909 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
index c8a7f2e..f47ec43 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
index b9c491f..d15d787f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
index 15dab0b..ce391d0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
index 7ab4a42..934f725 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
index 1aa36bb..f92a06b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
index 7ce48c1..8ebde17 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
index d3bd36dc..6e3d135 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
index 0f468b6..a6a6100 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
index 20da461a..464d562 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
index 6dc36ea..815ce2f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
index 86afaa70..33c3e33 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
index dfaac146..0432a3b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-1000, 1000, -1000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-1000, 1000, -1000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
index 5247f467..cf81e3c7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-200%, 200%, -200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-200%, 200%, -200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
index 8db471c3..b3c609f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
index e7a210f4..60aa8563 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
index 1f1e9ef7..242ca393 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
index b69c779..201874c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
index 7d9d5ed..0ce1db8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0,255,0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0,255,0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
index ea5529c..9b3de61 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0% ,100% ,0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0% ,100% ,0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
index c5816e06..587253a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, -2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, -2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
index 69a55cf..4e8156e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
index 12c296dc..5f07d38b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 1';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 1';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
index 4196888..0c329c96e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  .499  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  .499  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
index f7fb618..384a7f412 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  0.499  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  0.499  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
index 3f1a7305..60ee007 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0%,100%,0%,0.499)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0%,100%,0%,0.499)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
index efa7eb8..eaec0de 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
index eaf917e..947bbbc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1.0  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1.0  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
index c525f824..052a12b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  , +1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  , +1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
index b7f9674..ee9cd4e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba( -0  ,  255  , +0  ,  1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba( -0  ,  255  , +0  ,  1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
index 9a9a280..0ff839b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'gray';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 128,128,128,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'gray';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 128,128,128,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
index 26c2abec..141f4bf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'grey';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 128,128,128,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'grey';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 128,128,128,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.system.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.system.html
index d6c61951..3a563899 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.system.html
@@ -19,11 +19,9 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'ThreeDDarkShadow';
-assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'ThreeDDarkShadow';
+  assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
index 9ab01f0..5b9a834 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'transparent';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'transparent';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
index d7730a5..a077534c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
@@ -19,12 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'TrAnSpArEnT';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'TrAnSpArEnT';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html
index d420bbfc..2a12b05 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html
@@ -19,21 +19,20 @@
 var t = async_test("Passing a function in to ctx.fillStyle or ctx.strokeStyle with a toString callback works as specified");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = { toString: function() { return "#008000"; } };
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-ctx.fillStyle = {};
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-ctx.fillStyle = 800000;
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-assert_throws_js(TypeError, function() { ctx.fillStyle = { toString: function() { throw new TypeError; } }; });
-ctx.strokeStyle = { toString: function() { return "#008000"; } };
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-ctx.strokeStyle = {};
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-ctx.strokeStyle = 800000;
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-assert_throws_js(TypeError, function() { ctx.strokeStyle = { toString: function() { throw new TypeError; } }; });
-
+  ctx.fillStyle = { toString: function() { return "#008000"; } };
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  ctx.fillStyle = {};
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  ctx.fillStyle = 800000;
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  assert_throws_js(TypeError, function() { ctx.fillStyle = { toString: function() { throw new TypeError; } }; });
+  ctx.strokeStyle = { toString: function() { return "#008000"; } };
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  ctx.strokeStyle = {};
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  ctx.strokeStyle = 800000;
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  assert_throws_js(TypeError, function() { ctx.strokeStyle = { toString: function() { throw new TypeError; } }; });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html
index ab10f44b..1a4cde4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html
@@ -19,26 +19,25 @@
 var t = async_test("Conic gradient function with invalid inputs");
 _addTest(function(canvas, ctx) {
 
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(-Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(NaN, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, -Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, NaN, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, NaN); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(-Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(NaN, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, -Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, NaN, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, Infinity); });
 
-const g = ctx.createConicGradient(0, 0, 25);
-assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#f00'); });
-assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#f00'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, -Infinity); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, NaN); });
-
+  const g = ctx.createConicGradient(0, 0, 25);
+  assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#f00'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#f00'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, -Infinity); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, NaN); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html
index f61b614..ba85463 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html
@@ -19,17 +19,16 @@
 var t = async_test("Conic gradient with negative rotation");
 _addTest(function(canvas, ctx) {
 
-const g = ctx.createConicGradient(-Math.PI/2, 50, 25);
-// It's red in the upper right region and green on the lower left region
-g.addColorStop(0, "#f00");
-g.addColorStop(0.25, "#0f0");
-g.addColorStop(0.50, "#0f0");
-g.addColorStop(0.75, "#f00");
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
-_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
-
+  const g = ctx.createConicGradient(-Math.PI/2, 50, 25);
+  // It's red in the upper right region and green on the lower left region
+  g.addColorStop(0, "#f00");
+  g.addColorStop(0.25, "#0f0");
+  g.addColorStop(0.50, "#0f0");
+  g.addColorStop(0.75, "#f00");
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
+  _assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html
index ffe95866..f8cebbb0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html
@@ -19,17 +19,16 @@
 var t = async_test("Conic gradient with positive rotation");
 _addTest(function(canvas, ctx) {
 
-const g = ctx.createConicGradient(3*Math.PI/2, 50, 25);
-// It's red in the upper right region and green on the lower left region
-g.addColorStop(0, "#f00");
-g.addColorStop(0.25, "#0f0");
-g.addColorStop(0.50, "#0f0");
-g.addColorStop(0.75, "#f00");
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
-_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
-
+  const g = ctx.createConicGradient(3*Math.PI/2, 50, 25);
+  // It's red in the upper right region and green on the lower left region
+  g.addColorStop(0, "#f00");
+  g.addColorStop(0.25, "#0f0");
+  g.addColorStop(0.50, "#0f0");
+  g.addColorStop(0.75, "#f00");
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
+  _assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html
index bdf702f..dcc7575 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.empty.html
@@ -19,13 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(0, 0, 0, 50);
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(0, 0, 0, 50);
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
index e0ed47e..13f48f3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
@@ -19,17 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#ff0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'rgba(0,0,255, 0)');
-g.addColorStop(1, 'rgba(0,0,255, 1)');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
-_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
-
+  ctx.fillStyle = '#ff0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'rgba(0,0,255, 0)');
+  g.addColorStop(1, 'rgba(0,0,255, 1)');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
+  _assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html
index e6806d7d..3f7e27a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.color.html
@@ -19,15 +19,14 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
-_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
+  _assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html
index 33fee527..0d635ed6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html
@@ -19,15 +19,14 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'rgba(255,255,0, 0)');
-g.addColorStop(1, 'rgba(0,0,255, 1)');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 190,190,65,65, 3);
-_assertPixelApprox(canvas, 50,25, 126,126,128,128, 3);
-_assertPixelApprox(canvas, 75,25, 62,62,192,192, 3);
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'rgba(255,255,0, 0)');
+  g.addColorStop(1, 'rgba(0,0,255, 1)');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 190,190,65,65, 3);
+  _assertPixelApprox(canvas, 50,25, 126,126,128,128, 3);
+  _assertPixelApprox(canvas, 75,25, 62,62,192,192, 3);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
index adfac66d..9e62f343 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
@@ -19,17 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-canvas.width = 200;
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#ff0');
-g.addColorStop(0.5, '#0ff');
-g.addColorStop(1, '#f0f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 200, 50);
-_assertPixelApprox(canvas, 50,25, 127,255,127,255, 3);
-_assertPixelApprox(canvas, 100,25, 0,255,255,255, 3);
-_assertPixelApprox(canvas, 150,25, 127,127,255,255, 3);
-
+  canvas.width = 200;
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(0.5, '#0ff');
+  g.addColorStop(1, '#f0f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 200, 50);
+  _assertPixelApprox(canvas, 50,25, 127,255,127,255, 3);
+  _assertPixelApprox(canvas, 100,25, 0,255,255,255, 3);
+  _assertPixelApprox(canvas, 150,25, 127,127,255,255, 3);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
index abad0b5c..b46a7bed 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
@@ -19,19 +19,18 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(25, 0, 75, 0);
-g.addColorStop(0.4, '#0f0');
-g.addColorStop(0.6, '#0f0');
+  var g = ctx.createLinearGradient(25, 0, 75, 0);
+  g.addColorStop(0.4, '#0f0');
+  g.addColorStop(0.6, '#0f0');
 
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 20,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 80,25, 0,255,0,255, 2);
-
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 20,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 80,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
index ecd61728..099a3ea 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
@@ -19,33 +19,32 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-canvas.width = 200;
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0, '#ff0');
-g.addColorStop(0.25, '#00f');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#ff0');
-g.addColorStop(0.5, '#00f');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.75, '#00f');
-g.addColorStop(0.75, '#f00');
-g.addColorStop(0.75, '#ff0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.5, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 200, 50);
-_assertPixelApprox(canvas, 49,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 51,25, 255,255,0,255, 16);
-_assertPixelApprox(canvas, 99,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 101,25, 255,255,0,255, 16);
-_assertPixelApprox(canvas, 149,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 151,25, 255,255,0,255, 16);
-
+  canvas.width = 200;
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(0.25, '#00f');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#ff0');
+  g.addColorStop(0.5, '#00f');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.75, '#00f');
+  g.addColorStop(0.75, '#f00');
+  g.addColorStop(0.75, '#ff0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.5, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 200, 50);
+  _assertPixelApprox(canvas, 49,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 51,25, 255,255,0,255, 16);
+  _assertPixelApprox(canvas, 99,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 101,25, 255,255,0,255, 16);
+  _assertPixelApprox(canvas, 149,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 151,25, 255,255,0,255, 16);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
index 3b54469..a4a2955 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
@@ -19,23 +19,22 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ];
-for (var p = 0; p < ps.length; ++p)
-{
-        g.addColorStop(ps[p], '#0f0');
-        for (var i = 0; i < 15; ++i)
-                g.addColorStop(ps[p], '#f00');
-        g.addColorStop(ps[p], '#0f0');
-}
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 30,25, 0,255,0,255);
-_assertPixel(canvas, 40,25, 0,255,0,255);
-_assertPixel(canvas, 60,25, 0,255,0,255);
-_assertPixel(canvas, 80,25, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ];
+  for (var p = 0; p < ps.length; ++p)
+  {
+          g.addColorStop(ps[p], '#0f0');
+          for (var i = 0; i < 15; ++i)
+                  g.addColorStop(ps[p], '#f00');
+          g.addColorStop(ps[p], '#0f0');
+  }
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 30,25, 0,255,0,255);
+  _assertPixel(canvas, 40,25, 0,255,0,255);
+  _assertPixel(canvas, 60,25, 0,255,0,255);
+  _assertPixel(canvas, 80,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
index f6fa974..9ac3162 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
@@ -19,13 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
index 5297996..8030276 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
@@ -19,15 +19,14 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 0, 50);
-g.addColorStop(0, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,12, 191,191,63,255, 10);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 5);
-_assertPixelApprox(canvas, 50,37, 63,63,191,255, 10);
-
+  var g = ctx.createLinearGradient(0, 0, 0, 50);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,12, 191,191,63,255, 10);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 5);
+  _assertPixelApprox(canvas, 50,37, 63,63,191,255, 10);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
index 8c6b944..7a8892d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
@@ -19,17 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.rect(0, 0, 100, 50);
-ctx.fill();
-_assertPixel(canvas, 40,20, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.rect(0, 0, 100, 50);
+  ctx.fill();
+  _assertPixel(canvas, 40,20, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
index 3a7fe18a..7696cef 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
@@ -19,16 +19,15 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 40,20, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 40,20, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
index 619dc84..98ef6c3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
@@ -19,17 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.font = '100px sans-serif';
-ctx.fillText("AA", 0, 50);
-_assertGreen(ctx, 100, 50);
-
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.font = '100px sans-serif';
+  ctx.fillText("AA", 0, 50);
+  _assertGreen(ctx, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
index e5fb6482..283e387 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.rect(20, 20, 60, 10);
-ctx.stroke();
-_assertPixel(canvas, 19,19, 0,255,0,255);
-_assertPixel(canvas, 20,19, 0,255,0,255);
-_assertPixel(canvas, 21,19, 0,255,0,255);
-_assertPixel(canvas, 19,20, 0,255,0,255);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-_assertPixel(canvas, 21,20, 0,255,0,255);
-_assertPixel(canvas, 19,21, 0,255,0,255);
-_assertPixel(canvas, 20,21, 0,255,0,255);
-_assertPixel(canvas, 21,21, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.rect(20, 20, 60, 10);
+  ctx.stroke();
+  _assertPixel(canvas, 19,19, 0,255,0,255);
+  _assertPixel(canvas, 20,19, 0,255,0,255);
+  _assertPixel(canvas, 21,19, 0,255,0,255);
+  _assertPixel(canvas, 19,20, 0,255,0,255);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  _assertPixel(canvas, 21,20, 0,255,0,255);
+  _assertPixel(canvas, 19,21, 0,255,0,255);
+  _assertPixel(canvas, 20,21, 0,255,0,255);
+  _assertPixel(canvas, 21,21, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
index 54f4923..7d243ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
@@ -19,24 +19,23 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.strokeRect(20, 20, 60, 10);
-_assertPixel(canvas, 19,19, 0,255,0,255);
-_assertPixel(canvas, 20,19, 0,255,0,255);
-_assertPixel(canvas, 21,19, 0,255,0,255);
-_assertPixel(canvas, 19,20, 0,255,0,255);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-_assertPixel(canvas, 21,20, 0,255,0,255);
-_assertPixel(canvas, 19,21, 0,255,0,255);
-_assertPixel(canvas, 20,21, 0,255,0,255);
-_assertPixel(canvas, 21,21, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.strokeRect(20, 20, 60, 10);
+  _assertPixel(canvas, 19,19, 0,255,0,255);
+  _assertPixel(canvas, 20,19, 0,255,0,255);
+  _assertPixel(canvas, 21,19, 0,255,0,255);
+  _assertPixel(canvas, 19,20, 0,255,0,255);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  _assertPixel(canvas, 21,20, 0,255,0,255);
+  _assertPixel(canvas, 19,21, 0,255,0,255);
+  _assertPixel(canvas, 20,21, 0,255,0,255);
+  _assertPixel(canvas, 21,21, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
index df8553d67e..bab7c6b6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
@@ -19,17 +19,16 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.font = '100px sans-serif';
-ctx.strokeText("AA", 0, 50);
-_assertGreen(ctx, 100, 50);
-
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.font = '100px sans-serif';
+  ctx.strokeText("AA", 0, 50);
+  _assertGreen(ctx, 100, 50);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
index 2a7e270b..89d00927 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
@@ -19,30 +19,29 @@
 var t = async_test("createLinearGradient() throws TypeError if arguments are not finite");
 _addTest(function(canvas, ctx) {
 
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(NaN, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, -Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, NaN, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, -Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, NaN, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, NaN); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); });
-
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(NaN, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, -Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, NaN, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, -Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, NaN, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
index b2b1f78..0ae3220 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
@@ -19,18 +19,17 @@
 var t = async_test("Linear gradient coordinates are relative to the coordinate space at the time of filling");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-50, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-50, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
index 49ff026..8f761c66 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
@@ -19,19 +19,18 @@
 var t = async_test("Linear gradient coordinates are relative to the coordinate space at the time of filling");
 _addTest(function(canvas, ctx) {
 
-ctx.translate(100, 0);
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-150, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.translate(100, 0);
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-150, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
index 36f5e469..fdd1e0e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
@@ -19,19 +19,18 @@
 var t = async_test("Linear gradient transforms do not experience broken caching effects");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.translate(-50, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.translate(-50, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.compare.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.compare.html
index cc20035..9ff3e607 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.compare.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.compare.html
@@ -19,12 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g1 = ctx.createLinearGradient(0, 0, 100, 0);
-var g2 = ctx.createLinearGradient(0, 0, 100, 0);
-_assertDifferent(g1, g2, "g1", "g2");
-ctx.fillStyle = g1;
-_assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1");
-
+  var g1 = ctx.createLinearGradient(0, 0, 100, 0);
+  var g2 = ctx.createLinearGradient(0, 0, 100, 0);
+  _assertDifferent(g1, g2, "g1", "g2");
+  ctx.fillStyle = g1;
+  _assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
index 3b185b4d..9c30d9c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
@@ -19,15 +19,14 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = document.createElement('canvas').getContext('2d').createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = document.createElement('canvas').getContext('2d').createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html
index b0d5c01..95cc893 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.current.html
@@ -19,18 +19,17 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('style', 'color: #f00');
+  canvas.setAttribute('style', 'color: #f00');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'currentColor');
-g.addColorStop(1, 'currentColor');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,255, 2);
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'currentColor');
+  g.addColorStop(1, 'currentColor');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html
index 3150e9c..2be7b3d6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
 
-var g = ctx.createRadialGradient(0, 0, 0, 100, 0, 0);
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
-
+  var g = ctx.createRadialGradient(0, 0, 0, 100, 0, 0);
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
index b11a1a5..76aaed7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
@@ -19,13 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(Infinity, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#000'); });
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(Infinity, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#000'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.return.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.return.html
index 80af9ca..c3231214 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.return.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.return.html
@@ -19,16 +19,15 @@
 var t = async_test("createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradient");
 _addTest(function(canvas, ctx) {
 
-window.CanvasGradient.prototype.thisImplementsCanvasGradient = true;
+  window.CanvasGradient.prototype.thisImplementsCanvasGradient = true;
 
-var g1 = ctx.createLinearGradient(0, 0, 100, 0);
-_assertDifferent(g1.addColorStop, undefined, "g1.addColorStop", "undefined");
-_assertSame(g1.thisImplementsCanvasGradient, true, "g1.thisImplementsCanvasGradient", "true");
+  var g1 = ctx.createLinearGradient(0, 0, 100, 0);
+  _assertDifferent(g1.addColorStop, undefined, "g1.addColorStop", "undefined");
+  _assertSame(g1.thisImplementsCanvasGradient, true, "g1.thisImplementsCanvasGradient", "true");
 
-var g2 = ctx.createRadialGradient(0, 0, 10, 0, 0, 20);
-_assertDifferent(g2.addColorStop, undefined, "g2.addColorStop", "undefined");
-_assertSame(g2.thisImplementsCanvasGradient, true, "g2.thisImplementsCanvasGradient", "true");
-
+  var g2 = ctx.createRadialGradient(0, 0, 10, 0, 0, 20);
+  _assertDifferent(g2.addColorStop, undefined, "g2.addColorStop", "undefined");
+  _assertSame(g2.thisImplementsCanvasGradient, true, "g2.thisImplementsCanvasGradient", "true");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.type.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.type.html
index e79f8d0b..37c77d2f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.type.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.type.html
@@ -19,9 +19,8 @@
 var t = async_test("window.CanvasGradient exists and has the right properties");
 _addTest(function(canvas, ctx) {
 
-_assertDifferent(window.CanvasGradient, undefined, "window.CanvasGradient", "undefined");
-_assertDifferent(window.CanvasGradient.prototype.addColorStop, undefined, "window.CanvasGradient.prototype.addColorStop", "undefined");
-
+  _assertDifferent(window.CanvasGradient, undefined, "window.CanvasGradient", "undefined");
+  _assertDifferent(window.CanvasGradient.prototype.addColorStop, undefined, "window.CanvasGradient.prototype.addColorStop", "undefined");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html
index 6f363177..ae78d0d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.object.update.html
@@ -19,16 +19,15 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createLinearGradient(-100, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-g.addColorStop(0.1, '#0f0');
-g.addColorStop(0.9, '#0f0');
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-
+  var g = ctx.createLinearGradient(-100, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  g.addColorStop(0.1, '#0f0');
+  g.addColorStop(0.9, '#0f0');
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
index 4200a1e7..758fbcf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
index ab183f9..111cb80 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
index 872420b..a7ebc6ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
index fae7ef8..9f270f4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
index ff7438249..23f4723 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
index 7e95eb25..15ac2bf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
@@ -19,34 +19,33 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var tol = 1; // tolerance to avoid antialiasing artifacts
+  var tol = 1; // tolerance to avoid antialiasing artifacts
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = '#f00';
-ctx.beginPath();
-ctx.moveTo(30+tol, 40);
-ctx.lineTo(110, -20+tol);
-ctx.lineTo(110, 100-tol);
-ctx.fill();
+  ctx.fillStyle = '#f00';
+  ctx.beginPath();
+  ctx.moveTo(30+tol, 40);
+  ctx.lineTo(110, -20+tol);
+  ctx.lineTo(110, 100-tol);
+  ctx.fill();
 
-var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
index 7ebe7d2..d1f5be3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
@@ -19,34 +19,33 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var tol = 1; // tolerance to avoid antialiasing artifacts
+  var tol = 1; // tolerance to avoid antialiasing artifacts
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.beginPath();
-ctx.moveTo(30-tol, 40);
-ctx.lineTo(110, -20-tol);
-ctx.lineTo(110, 100+tol);
-ctx.fill();
+  ctx.fillStyle = '#0f0';
+  ctx.beginPath();
+  ctx.moveTo(30-tol, 40);
+  ctx.lineTo(110, -20-tol);
+  ctx.lineTo(110, 100+tol);
+  ctx.fill();
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
index 5db91b7..85c23d60 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html
index aeb4990..bcb4750 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.equal.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html
index 102a31b..070a97e4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside1.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html
index 5b26ec5..a7b06f1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside2.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html
index 30612d4..d7abedc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.inside3.html
@@ -19,26 +19,25 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.993, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.993, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.negative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.negative.html
index ab2ecf2..d86812b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.negative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.negative.html
@@ -19,10 +19,9 @@
 var t = async_test("createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative");
 _addTest(function(canvas, ctx) {
 
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); });
-
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
index b602661..0c16b41 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
@@ -19,82 +19,81 @@
 var t = async_test("createRadialGradient() throws TypeError if arguments are not finite");
 _addTest(function(canvas, ctx) {
 
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); });
-
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html
index cb161445..c928e18 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside1.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html
index 6853849..7bbe734 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside2.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html
index 9330fcd..7705d09 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.outside3.html
@@ -19,26 +19,25 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.001, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.001, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html
index 3a13947..25e1c01 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch1.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html
index ca6c1b7..75a077a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch2.html
@@ -19,27 +19,26 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.01, '#0f0');
-g.addColorStop(0.99, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.01, '#0f0');
+  g.addColorStop(0.99, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html
index bd032a94d..a93120c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.touch3.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
index 505dd698..d0eb13c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
@@ -19,19 +19,18 @@
 var t = async_test("Radial gradient coordinates are relative to the coordinate space at the time of filling");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
index d8d475f..6e56c4c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
@@ -19,20 +19,19 @@
 var t = async_test("Radial gradient coordinates are relative to the coordinate space at the time of filling");
 _addTest(function(canvas, ctx) {
 
-ctx.translate(100, 0);
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.translate(100, 0);
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
index ff27cb0..426021d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
@@ -19,20 +19,19 @@
 var t = async_test("Radial gradient transforms do not experience broken caching effects");
 _addTest(function(canvas, ctx) {
 
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.translate(50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.translate(50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html
index 9b97522..be69cca 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.animated.gif.html
@@ -19,18 +19,17 @@
 var t = async_test("createPattern() of an animated GIF draws the first frame");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-step_timeout(function () {
-    var pattern = ctx.createPattern(document.getElementById('anim-gr.gif'), 'repeat');
-    ctx.fillStyle = pattern;
-    ctx.fillRect(0, 0, 50, 50);
-    step_timeout(t.step_func_done(function () {
-        ctx.fillRect(50, 0, 50, 50);
-        _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    }), 250);
-}, 250);
-
+  deferTest();
+  step_timeout(function () {
+      var pattern = ctx.createPattern(document.getElementById('anim-gr.gif'), 'repeat');
+      ctx.fillStyle = pattern;
+      ctx.fillRect(0, 0, 50, 50);
+      step_timeout(t.step_func_done(function () {
+          ctx.fillRect(50, 0, 50, 50);
+          _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      }), 250);
+  }, 250);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html
index f0e50d0..069263ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.canvas.html
@@ -19,30 +19,29 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
 
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html
index 31999965..5ebffe5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.image.html
@@ -19,18 +19,17 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
index 09e0a047..f24899c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.type.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.type.html
index c07005e..c510063 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.type.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.type.html
@@ -19,14 +19,13 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertDifferent(window.CanvasPattern, undefined, "window.CanvasPattern", "undefined");
+  _assertDifferent(window.CanvasPattern, undefined, "window.CanvasPattern", "undefined");
 
-window.CanvasPattern.prototype.thisImplementsCanvasPattern = true;
+  window.CanvasPattern.prototype.thisImplementsCanvasPattern = true;
 
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-_assert(pattern.thisImplementsCanvasPattern, "pattern.thisImplementsCanvasPattern");
-
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  _assert(pattern.thisImplementsCanvasPattern, "pattern.thisImplementsCanvasPattern");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
index eba1ad50..fbeb7bd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
@@ -19,24 +19,23 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-canvas.width = 0;
-canvas.height = 10;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 10, "canvas.height", "10");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  canvas.width = 0;
+  canvas.height = 10;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 10, "canvas.height", "10");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
 
-canvas.width = 10;
-canvas.height = 0;
-_assertSame(canvas.width, 10, "canvas.width", "10");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  canvas.width = 10;
+  canvas.height = 0;
+  _assertSame(canvas.width, 10, "canvas.width", "10");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
 
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html
index cbda7d0..f93b36d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.crosscanvas.html
@@ -19,16 +19,15 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('green.png');
+  var img = document.getElementById('green.png');
 
-var pattern = document.createElement('canvas').getContext('2d').createPattern(img, 'no-repeat');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var pattern = document.createElement('canvas').getContext('2d').createPattern(img, 'no-repeat');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html
index 9f1bb2d..2cf2174 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('broken.png');
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
-
+  var img = document.getElementById('broken.png');
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
index 82b8624..fb05cbb4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
@@ -19,10 +19,9 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('red.png');
-img.src = "";
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('red.png');
+  img.src = "";
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
index 91d92fea..375c1b49 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
@@ -19,14 +19,13 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = new Image();
-img.src = '../images/red.png';
-// This triggers the "update the image data" algorithm.
-// The image will not go to the "completely available" state
-// until a fetch task in the networking task source is processed,
-// so the image must not be fully decodable yet:
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = new Image();
+  img.src = '../images/red.png';
+  // This triggers the "update the image data" algorithm.
+  // The image will not go to the "completely available" state
+  // until a fetch task in the networking task source is processed,
+  // so the image must not be fully decodable yet:
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
index 69d039994f..d43a0ca9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = new Image();
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = new Image();
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
index 0acd089..984bd36 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
@@ -19,15 +19,14 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('yellow.png');
-img.src = '../images/red.png';
-// This triggers the "update the image data" algorithm,
-// and resets the image to the "unavailable" state.
-// The image will not go to the "completely available" state
-// until a fetch task in the networking task source is processed,
-// so the image must not be fully decodable yet:
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('yellow.png');
+  img.src = '../images/red.png';
+  // This triggers the "update the image data" algorithm,
+  // and resets the image to the "unavailable" state.
+  // The image will not go to the "completely available" state
+  // until a fetch task in the networking task source is processed,
+  // so the image must not be fully decodable yet:
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
index 6df23c0..20d5543 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
@@ -19,10 +19,9 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('red.png');
-img.removeAttribute('src');
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('red.png');
+  img.removeAttribute('src');
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent-but-loading.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent-but-loading.html
index fe2722f..2af0a3ed 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent-but-loading.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent-but-loading.html
@@ -19,13 +19,12 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.createElement("img");
-img.src = "/images/no-such-image-really.png";
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
-img.src = "/images/no-such-image-really.png";
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.createElement("img");
+  img.src = "/images/no-such-image-really.png";
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
+  var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
+  img.src = "/images/no-such-image-really.png";
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent.html
index 71a31e3..b365281 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nonexistent.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('no-such-image-really.png');
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
-
+  var img = document.getElementById('no-such-image-really.png');
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nosrc.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nosrc.html
index b1bcad5..710749d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nosrc.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.nosrc.html
@@ -19,11 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.createElement("img");
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.createElement("img");
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
+  var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.null.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.null.html
index 0a9407ba..8ae002d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.null.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.null.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_js(TypeError, function() { ctx.createPattern(null, 'repeat'); });
-
+  assert_throws_js(TypeError, function() { ctx.createPattern(null, 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.string.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.string.html
index c612982e..af32e63b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.string.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.string.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_js(TypeError, function() { ctx.createPattern('../images/red.png', 'repeat'); });
-
+  assert_throws_js(TypeError, function() { ctx.createPattern('../images/red.png', 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.undefined.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.undefined.html
index 27fea184..75f50c7a4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.undefined.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_js(TypeError, function() { ctx.createPattern(undefined, 'repeat'); });
-
+  assert_throws_js(TypeError, function() { ctx.createPattern(undefined, 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zeroheight.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zeroheight.html
index aebf34e9..cd12c2e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zeroheight.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zeroheight.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('red-zeroheight.svg');
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('red-zeroheight.svg');
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zerowidth.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zerowidth.html
index 0e74363..053b8ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zerowidth.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zerowidth.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('red-zerowidth.svg');
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('red-zerowidth.svg');
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
index 066b30a9..0524351 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
@@ -19,26 +19,25 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
 
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
 
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
index 10f9c0a..6e50a576 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
@@ -19,30 +19,29 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
 
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html
index 5ac850a..94f55c8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image1.html
@@ -19,21 +19,20 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-deferTest();
-img.onload = t.step_func_done(function ()
-{
-    ctx.fillStyle = pattern;
-    ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  deferTest();
+  img.onload = t.step_func_done(function ()
+  {
+      ctx.fillStyle = pattern;
+      ctx.fillRect(0, 0, 100, 50);
 
-    _assertPixel(canvas, 1,1, 0,255,0,255);
-    _assertPixel(canvas, 98,1, 0,255,0,255);
-    _assertPixel(canvas, 1,48, 0,255,0,255);
-    _assertPixel(canvas, 98,48, 0,255,0,255);
-});
-img.src = '/images/red.png';
-
+      _assertPixel(canvas, 1,1, 0,255,0,255);
+      _assertPixel(canvas, 98,1, 0,255,0,255);
+      _assertPixel(canvas, 1,48, 0,255,0,255);
+      _assertPixel(canvas, 98,48, 0,255,0,255);
+  });
+  img.src = '/images/red.png';
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html
index 1c95aa0..1025d19 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.modify.image2.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#00f';
-ctx.fillRect(0, 0, 100, 50);
-deferTest();
-img.onload = t.step_func_done(function ()
-{
-    ctx.fillStyle = pattern;
-    ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#00f';
+  ctx.fillRect(0, 0, 100, 50);
+  deferTest();
+  img.onload = t.step_func_done(function ()
+  {
+      ctx.fillStyle = pattern;
+      ctx.fillRect(0, 0, 100, 50);
 
-    _assertPixel(canvas, 1,1, 0,255,0,255);
-    _assertPixel(canvas, 98,1, 0,255,0,255);
-    _assertPixel(canvas, 1,48, 0,255,0,255);
-    _assertPixel(canvas, 98,48, 0,255,0,255);
-});
-img.src = '/images/red.png';
-
+      _assertPixel(canvas, 1,1, 0,255,0,255);
+      _assertPixel(canvas, 98,1, 0,255,0,255);
+      _assertPixel(canvas, 1,48, 0,255,0,255);
+      _assertPixel(canvas, 98,48, 0,255,0,255);
+  });
+  img.src = '/images/red.png';
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
index 6b0fb8c..036be9e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
@@ -19,19 +19,18 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
index 1b1b9bb..dfe2b858 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
 
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.translate(50, 0);
-ctx.fillRect(-50, 0, 100, 50);
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.translate(50, 0);
+  ctx.fillRect(-50, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
index c483e4f..dfd63721 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
@@ -19,23 +19,22 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('green.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 50, 50);
+  var img = document.getElementById('green.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 50, 50);
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
 
-ctx.fillStyle = pattern;
-ctx.translate(50, 0);
-ctx.fillRect(-50, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.translate(50, 0);
+  ctx.fillRect(-50, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
index 733f728..5456a54 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
@@ -19,23 +19,22 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('red.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.translate(50, 25);
-ctx.fillRect(-50, -25, 100, 50);
+  var img = document.getElementById('red.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.translate(50, 25);
+  ctx.fillRect(-50, -25, 100, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 25);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 25);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
index a727994..4df0cdf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('red.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('red.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = pattern;
-ctx.fillRect(0, -50, 100, 50);
-ctx.fillRect(-100, 0, 100, 50);
-ctx.fillRect(0, 50, 100, 50);
-ctx.fillRect(100, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, -50, 100, 50);
+  ctx.fillRect(-100, 0, 100, 50);
+  ctx.fillRect(0, 50, 100, 50);
+  ctx.fillRect(100, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
index b45c95b..f0ad70fc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
@@ -19,29 +19,28 @@
 var t = async_test("Canvas patterns do not get flipped when painted");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 25);
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 25, 100, 25);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 25);
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 25, 100, 25);
 
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 25);
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 25);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
index a618223..b45f4ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
@@ -19,25 +19,24 @@
 var t = async_test("Image patterns do not get flipped when painted");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('rrgg-256x256.png');
-var pattern = ctx.createPattern(img, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.save();
-ctx.translate(0, -103);
-ctx.fillRect(0, 103, 100, 50);
-ctx.restore();
+  var img = document.getElementById('rrgg-256x256.png');
+  var pattern = ctx.createPattern(img, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.save();
+  ctx.translate(0, -103);
+  ctx.fillRect(0, 103, 100, 50);
+  ctx.restore();
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 25);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 25);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
index 238f155..8999ac4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
@@ -19,19 +19,18 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('green-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
index cfc270d..8dc6402 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
@@ -19,20 +19,19 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('rgrg-256x256.png');
-var pattern = ctx.createPattern(img, 'repeat');
-ctx.fillStyle = pattern;
-ctx.translate(-128, -78);
-ctx.fillRect(128, 78, 100, 50);
+  var img = document.getElementById('rgrg-256x256.png');
+  var pattern = ctx.createPattern(img, 'repeat');
+  ctx.fillStyle = pattern;
+  ctx.translate(-128, -78);
+  ctx.fillRect(128, 78, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
index b05feec..9c03d02 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
@@ -19,16 +19,15 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('ggrr-256x256.png');
-var pattern = ctx.createPattern(img, 'repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('ggrr-256x256.png');
+  var pattern = ctx.createPattern(img, 'repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
index 223d8c0..0dc0a865 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
@@ -19,19 +19,18 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('rgrg-256x256.png');
-var pattern = ctx.createPattern(img, 'repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('rgrg-256x256.png');
+  var pattern = ctx.createPattern(img, 'repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.translate(-128, -78);
-ctx.fillRect(128, 78, 100, 50);
+  ctx.translate(-128, -78);
+  ctx.fillRect(128, 78, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
index ca14040..b93919587 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
@@ -19,20 +19,19 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('green-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat');
-ctx.fillStyle = pattern;
-ctx.translate(50, 25);
-ctx.fillRect(-50, -25, 100, 50);
+  var img = document.getElementById('green-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat');
+  ctx.fillStyle = pattern;
+  ctx.translate(50, 25);
+  ctx.fillRect(-50, -25, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
index 9f2f871..8c77908 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
@@ -19,21 +19,20 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 16);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 16);
 
-var img = document.getElementById('green-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat-x');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat-x');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
index 38ad51b..4c7fa9d4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('red-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat-x');
-ctx.fillStyle = pattern;
-ctx.translate(0, 16);
-ctx.fillRect(0, -16, 100, 50);
+  var img = document.getElementById('red-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat-x');
+  ctx.fillStyle = pattern;
+  ctx.translate(0, 16);
+  ctx.fillRect(0, -16, 100, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 16);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 16);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
index ba01bf3..26ee85e4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('red-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat-x');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('red-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat-x');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 16);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 16);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
index bb07aca..c28ff15 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
@@ -19,21 +19,20 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 16, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 16, 50);
 
-var img = document.getElementById('green-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat-y');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat-y');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
index c7ec99e7..7f2bb163 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
@@ -19,25 +19,24 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('red-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat-y');
-ctx.fillStyle = pattern;
-ctx.translate(48, 0);
-ctx.fillRect(-48, 0, 100, 50);
+  var img = document.getElementById('red-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat-y');
+  ctx.fillStyle = pattern;
+  ctx.translate(48, 0);
+  ctx.fillRect(-48, 0, 100, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 16, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 16, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
index a3267d9..7be743e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
 
-var img = document.getElementById('red-16x16.png');
-var pattern = ctx.createPattern(img, 'repeat-y');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('red-16x16.png');
+  var pattern = ctx.createPattern(img, 'repeat-y');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 16, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 16, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.case.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.case.html
index ccbef07..d998bbeb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.case.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.case.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); });
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html
index 48db7da2..2810efe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.empty.html
@@ -19,18 +19,17 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var img = document.getElementById('green-1x1.png');
-var pattern = ctx.createPattern(img, "");
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 200, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var img = document.getElementById('green-1x1.png');
+  var pattern = ctx.createPattern(img, "");
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 200, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.null.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.null.html
index 7a4b264d..0de121a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.null.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.null.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assert(ctx.createPattern(canvas, null) != null, "ctx.createPattern(canvas, null) != null");
-
+  _assert(ctx.createPattern(canvas, null) != null, "ctx.createPattern(canvas, null) != null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
index b28bf57..33d601d9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "repeat\0"); });
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "repeat\0"); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.undefined.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
index ba40af0..f0a7ae8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, undefined); });
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, undefined); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
index 5c26a41..cdcc7d6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "invalid"); });
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "invalid"); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
index f9b47f5..11c9ec0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "null"); });
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "null"); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.nonexistent.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.nonexistent.html
index 1f25bbc8..8cd3983d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.nonexistent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.nonexistent.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('no-such-image-really.png');
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
-
+  var img = document.getElementById('no-such-image-really.png');
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zeroheight.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zeroheight.html
index b186113..11c07e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zeroheight.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zeroheight.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('red-zeroheight.svg');
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('red-zeroheight.svg');
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zerowidth.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zerowidth.html
index 2f93d7c..a8b8cb1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zerowidth.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zerowidth.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var img = document.getElementById('red-zerowidth.svg');
-_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
-
+  var img = document.getElementById('red-zerowidth.svg');
+  _assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html
index 775d360..21da305 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.identity.html
@@ -19,23 +19,22 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
-pattern.setTransform(new DOMMatrix());
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  pattern.setTransform(new DOMMatrix());
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html
index 8650ed9..bfb22aeb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.infinity.html
@@ -19,23 +19,22 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
-pattern.setTransform({a: Infinity});
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  pattern.setTransform({a: Infinity});
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.invalid.html
index ebd2801..13f0459 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.transform.invalid.html
@@ -19,12 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var pattern = ctx.createPattern(canvas2, 'no-repeat');
-assert_throws_js(TypeError, function() { pattern.setTransform({a: 1, m11: 2}); });
-
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var pattern = ctx.createPattern(canvas2, 'no-repeat');
+  assert_throws_js(TypeError, function() { pattern.setTransform({a: 1, m11: 2}); });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.default.html
index 91542e28..a432d74a4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/fill-and-stroke-styles/2d.strokeStyle.default.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'");
-
+  _assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.1.html
index 38d3bd74..8888ae6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.1.html
@@ -19,14 +19,13 @@
 var t = async_test("Shadow color alpha components are used");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = 'rgba(255, 0, 0, 0.01)';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = 'rgba(255, 0, 0, 0.01)';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 4);
-
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 4);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.2.html
index ae81303..534d3dd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.2.html
@@ -19,14 +19,13 @@
 var t = async_test("Shadow color alpha components are used");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = 'rgba(0, 0, 255, 0.5)';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = 'rgba(0, 0, 255, 0.5)';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.3.html
index 42cabad..4682282 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.3.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are affected by globalAlpha");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 50;
-ctx.globalAlpha = 0.5;
-ctx.fillRect(0, -50, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 50;
+  ctx.globalAlpha = 0.5;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.4.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.4.html
index 96af9df..2932c9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.4.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows with alpha components are correctly affected by globalAlpha");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
-ctx.shadowColor = 'rgba(0, 0, 255, 0.707)';
-ctx.shadowOffsetY = 50;
-ctx.globalAlpha = 0.707;
-ctx.fillRect(0, -50, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
+  ctx.shadowColor = 'rgba(0, 0, 255, 0.707)';
+  ctx.shadowOffsetY = 50;
+  ctx.globalAlpha = 0.707;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.5.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.5.html
index 2f0b6838..ffa9ed8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.alpha.5.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadows of shapes with alpha components are drawn correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = 'rgba(64, 0, 0, 0.5)';
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = 'rgba(64, 0, 0, 0.5)';
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.initial.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.initial.html
index 4d1d71c..b688156 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.initial.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.initial.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.invalid.html
index cbd68c9..68f5dd4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.invalid.html
@@ -19,34 +19,33 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = -2;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = -2;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = Infinity;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = Infinity;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = -Infinity;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = -Infinity;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = NaN;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = NaN;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = 'string';
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = 'string';
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = true;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = true;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = false;
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = false;
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.valid.html
index 1e6a1a80..51063a6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowBlur.valid.html
@@ -19,18 +19,17 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowBlur = 1;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
 
-ctx.shadowBlur = 0.5;
-_assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5");
+  ctx.shadowBlur = 0.5;
+  _assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5");
 
-ctx.shadowBlur = 1e6;
-_assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6");
+  ctx.shadowBlur = 1e6;
+  _assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6");
 
-ctx.shadowBlur = 0;
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-
+  ctx.shadowBlur = 0;
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.initial.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.initial.html
index 5e02f3d1..f4d0d33 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.initial.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.initial.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'");
-
+  _assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.invalid.html
index 68b82d842..73f835dd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.invalid.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = 'bogus';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = 'bogus';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
 
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = 'red bogus';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = 'red bogus';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
 
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = ctx;
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = ctx;
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
 
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = undefined;
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = undefined;
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.valid.html
index 84728f0..bc86c3d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowColor.valid.html
@@ -19,12 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowColor = 'lime';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = 'lime';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
 
-ctx.shadowColor = 'RGBA(0,255, 0,0)';
-_assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'");
-
+  ctx.shadowColor = 'RGBA(0,255, 0,0)';
+  _assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.initial.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.initial.html
index f15e383..056dd160 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.initial.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.initial.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
-
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.invalid.html
index c9872cb..1567edb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.invalid.html
@@ -19,48 +19,47 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = Infinity;
-ctx.shadowOffsetY = Infinity;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = Infinity;
+  ctx.shadowOffsetY = Infinity;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = -Infinity;
-ctx.shadowOffsetY = -Infinity;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = -Infinity;
+  ctx.shadowOffsetY = -Infinity;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = NaN;
-ctx.shadowOffsetY = NaN;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = NaN;
+  ctx.shadowOffsetY = NaN;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = 'string';
-ctx.shadowOffsetY = 'string';
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = 'string';
+  ctx.shadowOffsetY = 'string';
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = true;
-ctx.shadowOffsetY = true;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 1, "ctx.shadowOffsetY", "1");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = true;
+  ctx.shadowOffsetY = true;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 1, "ctx.shadowOffsetY", "1");
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = false;
-ctx.shadowOffsetY = false;
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
-
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = false;
+  ctx.shadowOffsetY = false;
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.valid.html
index dc89870e..04fe18c3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.attributes.shadowOffset.valid.html
@@ -19,31 +19,30 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
 
-ctx.shadowOffsetX = 0.5;
-ctx.shadowOffsetY = 0.25;
-_assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5");
-_assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25");
+  ctx.shadowOffsetX = 0.5;
+  ctx.shadowOffsetY = 0.25;
+  _assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5");
+  _assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25");
 
-ctx.shadowOffsetX = -0.5;
-ctx.shadowOffsetY = -0.25;
-_assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5");
-_assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25");
+  ctx.shadowOffsetX = -0.5;
+  ctx.shadowOffsetY = -0.25;
+  _assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5");
+  _assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25");
 
-ctx.shadowOffsetX = 0;
-ctx.shadowOffsetY = 0;
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
+  ctx.shadowOffsetX = 0;
+  ctx.shadowOffsetY = 0;
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
 
-ctx.shadowOffsetX = 1e6;
-ctx.shadowOffsetY = 1e6;
-_assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6");
-_assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6");
-
+  ctx.shadowOffsetX = 1e6;
+  ctx.shadowOffsetY = 1e6;
+  _assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6");
+  _assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.high-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.high-manual.html
index f5acaa9..aae0a16 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.high-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.high-manual.html
@@ -19,13 +19,12 @@
 var t = async_test("Shadows look correct for large blurs");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#ff0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 0;
-ctx.shadowBlur = 100;
-ctx.fillRect(-200, -200, 200, 400);
-
+  ctx.fillStyle = '#ff0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 0;
+  ctx.shadowBlur = 100;
+  ctx.fillRect(-200, -200, 200, 400);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.low-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.low-manual.html
index ba594ce..9674d6f0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.low-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.blur.low-manual.html
@@ -19,20 +19,19 @@
 var t = async_test("Shadows look correct for small blurs");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#ff0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 25;
-for (var x = 0; x < 100; ++x) {
-    ctx.save();
-    ctx.beginPath();
-    ctx.rect(x, 0, 1, 50);
-    ctx.clip();
-    ctx.shadowBlur = x;
-    ctx.fillRect(-200, -200, 500, 200);
-    ctx.restore();
-}
-
+  ctx.fillStyle = '#ff0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 25;
+  for (var x = 0; x < 100; ++x) {
+      ctx.save();
+      ctx.beginPath();
+      ctx.rect(x, 0, 1, 50);
+      ctx.clip();
+      ctx.shadowBlur = x;
+      ctx.fillRect(-200, -200, 500, 200);
+      ctx.restore();
+  }
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.alpha.html
index 5ad64e1..222199e6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.alpha.html
@@ -19,21 +19,20 @@
 var t = async_test("Shadows are drawn correctly for partially-transparent canvases");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)';
-ctx2.fillRect(0, 0, 100, 50);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)';
+  ctx2.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.drawImage(canvas2, 0, -50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.drawImage(canvas2, 0, -50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.basic.html
index fd70884..e752c8f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.basic.html
@@ -19,21 +19,20 @@
 var t = async_test("Shadows are drawn for canvases");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(canvas2, 0, -50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(canvas2, 0, -50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.1.html
index f18b7d71..7d159328 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.1.html
@@ -19,19 +19,18 @@
 var t = async_test("Shadows are not drawn for transparent canvases");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(canvas2, 0, -50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(canvas2, 0, -50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.2.html
index c959054..4326d42 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.canvas.transparent.2.html
@@ -19,27 +19,26 @@
 var t = async_test("Shadows are not drawn for transparent parts of canvases");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-canvas2.width = 100;
-canvas2.height = 50;
-var ctx2 = canvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 50, 50);
+  var canvas2 = document.createElement('canvas');
+  canvas2.width = 100;
+  canvas2.height = 50;
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 50, 50);
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.drawImage(canvas2, 50, -50);
-ctx.shadowColor = '#f00';
-ctx.drawImage(canvas2, -50, -50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.drawImage(canvas2, 50, -50);
+  ctx.shadowColor = '#f00';
+  ctx.drawImage(canvas2, -50, -50);
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.1.html
index f952096..6caff8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.1.html
@@ -19,23 +19,22 @@
 var t = async_test("Shadows of clipped shapes are still drawn within the clipping region");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
 
-ctx.save();
-ctx.beginPath();
-ctx.rect(50, 0, 50, 50);
-ctx.clip();
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-ctx.restore();
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(50, 0, 50, 50);
+  ctx.clip();
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.restore();
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.2.html
index 22208c5..a5b05237 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.2.html
@@ -19,23 +19,22 @@
 var t = async_test("Shadows are not drawn outside the clipping region");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
 
-ctx.save();
-ctx.beginPath();
-ctx.rect(0, 0, 50, 50);
-ctx.clip();
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-ctx.restore();
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(0, 0, 50, 50);
+  ctx.clip();
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.restore();
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.3.html
index 5af9b012..b765263 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.clip.3.html
@@ -19,24 +19,23 @@
 var t = async_test("Shadows of clipped shapes are still drawn within the clipping region");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
 
-ctx.save();
-ctx.beginPath();
-ctx.rect(0, 0, 50, 50);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(-50, 0, 50, 50);
-ctx.restore();
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(0, 0, 50, 50);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(-50, 0, 50, 50);
+  ctx.restore();
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.1.html
index 28a82e6..d64ecb49 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.1.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are drawn using globalCompositeOperation");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(-100, 0, 200, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(-100, 0, 200, 50);
 
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.2.html
index aeb6dc1..abc6b98 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.2.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are drawn using globalCompositeOperation");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.shadowColor = '#f00';
-ctx.shadowBlur = 1;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(-10, -10, 120, 70);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.shadowColor = '#f00';
+  ctx.shadowBlur = 1;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(-10, -10, 120, 70);
 
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.3.html
index 9a0c02e11..45eebd9e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.composite.3.html
@@ -19,17 +19,16 @@
 var t = async_test("Areas outside shadows are drawn correctly with destination-out");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.shadowColor = '#f00';
-ctx.shadowBlur = 10;
-ctx.fillStyle = '#f00';
-ctx.fillRect(200, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.shadowColor = '#f00';
+  ctx.shadowBlur = 10;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(200, 0, 100, 50);
 
-_assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-
+  _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.blur.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.blur.html
index ffe70f1c..7efa459c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.blur.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.blur.html
@@ -19,13 +19,12 @@
 var t = async_test("Shadows are drawn if shadowBlur is set");
 _addTest(function(canvas, ctx) {
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowBlur = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowBlur = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.1.html
index e3adc9ae..953ea04 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.1.html
@@ -19,11 +19,10 @@
 var t = async_test("Shadows are not drawn when only shadowColor is set");
 _addTest(function(canvas, ctx) {
 
-ctx.shadowColor = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.shadowColor = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.2.html
index 8dd3fc3..2a8cf730 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.off.2.html
@@ -19,12 +19,11 @@
 var t = async_test("Shadows are not drawn when only shadowColor is set");
 _addTest(function(canvas, ctx) {
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.x.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.x.html
index 54fa86e..6eae985 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.x.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.x.html
@@ -19,13 +19,12 @@
 var t = async_test("Shadows are drawn if shadowOffsetX is set");
 _addTest(function(canvas, ctx) {
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.y.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.y.html
index 7295d57..2025bab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.y.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.enable.y.html
@@ -19,13 +19,12 @@
 var t = async_test("Shadows are drawn if shadowOffsetY is set");
 _addTest(function(canvas, ctx) {
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.alpha.html
index 7ae83eb..65f4fda 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.alpha.html
@@ -19,18 +19,17 @@
 var t = async_test("Shadows are drawn correctly for partially-transparent gradient fills");
 _addTest(function(canvas, ctx) {
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, 'rgba(255,0,0,0.5)');
-gradient.addColorStop(1, 'rgba(255,0,0,0.5)');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, 'rgba(255,0,0,0.5)');
+  gradient.addColorStop(1, 'rgba(255,0,0,0.5)');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.basic.html
index 233770e..a7c5efe7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.basic.html
@@ -19,18 +19,17 @@
 var t = async_test("Shadows are drawn for gradient fills");
 _addTest(function(canvas, ctx) {
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, '#f00');
-gradient.addColorStop(1, '#f00');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, '#f00');
+  gradient.addColorStop(1, '#f00');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.1.html
index 2427c7f..1c11f75 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.1.html
@@ -19,18 +19,17 @@
 var t = async_test("Shadows are not drawn for transparent gradient fills");
 _addTest(function(canvas, ctx) {
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, 'rgba(0,0,0,0)');
-gradient.addColorStop(1, 'rgba(0,0,0,0)');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, 'rgba(0,0,0,0)');
+  gradient.addColorStop(1, 'rgba(0,0,0,0)');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.2.html
index e27b19c..244aeca 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.gradient.transparent.2.html
@@ -19,24 +19,23 @@
 var t = async_test("Shadows are not drawn for transparent parts of gradient fills");
 _addTest(function(canvas, ctx) {
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, '#f00');
-gradient.addColorStop(0.499, '#f00');
-gradient.addColorStop(0.5, 'rgba(0,0,0,0)');
-gradient.addColorStop(1, 'rgba(0,0,0,0)');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, '#f00');
+  gradient.addColorStop(0.499, '#f00');
+  gradient.addColorStop(0.5, 'rgba(0,0,0,0)');
+  gradient.addColorStop(1, 'rgba(0,0,0,0)');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.alpha.html
index 2c8133f..8d9022d6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.alpha.html
@@ -19,14 +19,13 @@
 var t = async_test("Shadows are drawn correctly for partially-transparent images");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.drawImage(document.getElementById('transparent50.png'), 0, -50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.drawImage(document.getElementById('transparent50.png'), 0, -50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.basic.html
index f91b195..351e7515 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.basic.html
@@ -19,14 +19,13 @@
 var t = async_test("Shadows are drawn for images");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(document.getElementById('red.png'), 0, -50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(document.getElementById('red.png'), 0, -50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.scale.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.scale.html
index c0edc313..cbec7cc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.scale.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.scale.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are drawn correctly for scaled images");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.drawImage(document.getElementById('redtransparent.png'), 0, 0, 100, 50, -10, -50, 240, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.drawImage(document.getElementById('redtransparent.png'), 0, 0, 100, 50, -10, -50, 240, 50);
 
-_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-
+  _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.section.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.section.html
index 2ff2bf2..472559b7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.section.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.section.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are not drawn for areas outside image source rectangles");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#f00';
-ctx.drawImage(document.getElementById('redtransparent.png'), 50, 0, 50, 50, 0, -50, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#f00';
+  ctx.drawImage(document.getElementById('redtransparent.png'), 50, 0, 50, 50, 0, -50, 50, 50);
 
-_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-
+  _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.1.html
index c152dc2..768e961 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.1.html
@@ -19,14 +19,13 @@
 var t = async_test("Shadows are not drawn for transparent images");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(document.getElementById('transparent.png'), 0, -50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(document.getElementById('transparent.png'), 0, -50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.2.html
index 636c72d..a445b7ae 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.image.transparent.2.html
@@ -19,20 +19,19 @@
 var t = async_test("Shadows are not drawn for transparent parts of images");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.drawImage(document.getElementById('redtransparent.png'), 50, -50);
-ctx.shadowColor = '#f00';
-ctx.drawImage(document.getElementById('redtransparent.png'), -50, -50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.drawImage(document.getElementById('redtransparent.png'), 50, -50);
+  ctx.shadowColor = '#f00';
+  ctx.drawImage(document.getElementById('redtransparent.png'), -50, -50);
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeX.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeX.html
index 828fe89..0a73b07 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeX.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeX.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadows can be offset with negative x");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = -50;
-ctx.fillRect(50, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = -50;
+  ctx.fillRect(50, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeY.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeY.html
index daf9b7e..04c9620 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeY.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.negativeY.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadows can be offset with negative y");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = -25;
-ctx.fillRect(0, 25, 100, 25);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = -25;
+  ctx.fillRect(0, 25, 100, 25);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveX.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveX.html
index 9d627dd..1254474 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveX.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveX.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadows can be offset with positive x");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveY.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveY.html
index 6198263..fdcf25a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveY.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.offset.positiveY.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadows can be offset with positive y");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 25;
-ctx.fillRect(0, 0, 100, 25);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 25;
+  ctx.fillRect(0, 0, 100, 25);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.outside.html
index 331dca9..fcf2129 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.outside.html
@@ -19,23 +19,22 @@
 var t = async_test("Shadows of shapes outside the visible area can be offset onto the visible area");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 100;
-ctx.fillRect(-100, 0, 25, 50);
-ctx.shadowOffsetX = -100;
-ctx.fillRect(175, 0, 25, 50);
-ctx.shadowOffsetX = 0;
-ctx.shadowOffsetY = 100;
-ctx.fillRect(25, -100, 50, 25);
-ctx.shadowOffsetY = -100;
-ctx.fillRect(25, 125, 50, 25);
-_assertPixel(canvas, 12,25, 0,255,0,255);
-_assertPixel(canvas, 87,25, 0,255,0,255);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 100;
+  ctx.fillRect(-100, 0, 25, 50);
+  ctx.shadowOffsetX = -100;
+  ctx.fillRect(175, 0, 25, 50);
+  ctx.shadowOffsetX = 0;
+  ctx.shadowOffsetY = 100;
+  ctx.fillRect(25, -100, 50, 25);
+  ctx.shadowOffsetY = -100;
+  ctx.fillRect(25, 125, 50, 25);
+  _assertPixel(canvas, 12,25, 0,255,0,255);
+  _assertPixel(canvas, 87,25, 0,255,0,255);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.alpha.html
index a995a4ab..8e602d6c2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.alpha.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are drawn correctly for partially-transparent fill patterns");
 _addTest(function(canvas, ctx) {
 
-var pattern = ctx.createPattern(document.getElementById('transparent50.png'), 'repeat');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, -50, 100, 50);
+  var pattern = ctx.createPattern(document.getElementById('transparent50.png'), 'repeat');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.basic.html
index adb8aea..c776d6bc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.basic.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are drawn for fill patterns");
 _addTest(function(canvas, ctx) {
 
-var pattern = ctx.createPattern(document.getElementById('red.png'), 'repeat');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = pattern;
-ctx.fillRect(0, -50, 100, 50);
+  var pattern = ctx.createPattern(document.getElementById('red.png'), 'repeat');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.1.html
index 37af35d..c3dca30 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.1.html
@@ -19,16 +19,15 @@
 var t = async_test("Shadows are not drawn for transparent fill patterns");
 _addTest(function(canvas, ctx) {
 
-var pattern = ctx.createPattern(document.getElementById('transparent.png'), 'repeat');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = pattern;
-ctx.fillRect(0, -50, 100, 50);
+  var pattern = ctx.createPattern(document.getElementById('transparent.png'), 'repeat');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.2.html
index e96e9e3..ecb8241 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.pattern.transparent.2.html
@@ -19,20 +19,19 @@
 var t = async_test("Shadows are not drawn for transparent parts of fill patterns");
 _addTest(function(canvas, ctx) {
 
-var pattern = ctx.createPattern(document.getElementById('redtransparent.png'), 'repeat');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, -50, 100, 50);
+  var pattern = ctx.createPattern(document.getElementById('redtransparent.png'), 'repeat');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, -50, 100, 50);
 
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.basic.html
index c5834b8..6146ba7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.basic.html
@@ -19,21 +19,20 @@
 var t = async_test("Shadows are drawn for strokes");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.moveTo(0, -25);
-ctx.lineTo(100, -25);
-ctx.stroke();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.moveTo(0, -25);
+  ctx.lineTo(100, -25);
+  ctx.stroke();
 
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.1.html
index ff6a1c4..5d6e53a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.1.html
@@ -19,24 +19,23 @@
 var t = async_test("Shadows are not drawn for areas outside stroke caps");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.lineCap = 'butt';
-ctx.moveTo(-50, -25);
-ctx.lineTo(0, -25);
-ctx.moveTo(100, -25);
-ctx.lineTo(150, -25);
-ctx.stroke();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.lineCap = 'butt';
+  ctx.moveTo(-50, -25);
+  ctx.lineTo(0, -25);
+  ctx.moveTo(100, -25);
+  ctx.lineTo(150, -25);
+  ctx.stroke();
 
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.2.html
index 40fd22a1..f18a9b6c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.cap.2.html
@@ -19,22 +19,21 @@
 var t = async_test("Shadows are drawn for stroke caps");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.lineCap = 'square';
-ctx.moveTo(25, -25);
-ctx.lineTo(75, -25);
-ctx.stroke();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.lineCap = 'square';
+  ctx.moveTo(25, -25);
+  ctx.lineTo(75, -25);
+  ctx.stroke();
 
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.1.html
index 5c7cda8e..46735a9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.1.html
@@ -19,24 +19,23 @@
 var t = async_test("Shadows are not drawn for areas outside stroke joins");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'bevel';
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100);
-ctx.stroke();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'bevel';
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100);
+  ctx.stroke();
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.2.html
index 0ed3c90..85abc24e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.2.html
@@ -19,26 +19,25 @@
 var t = async_test("Shadows are drawn for stroke joins");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'miter';
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100);
-ctx.stroke();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'miter';
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100);
+  ctx.stroke();
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.3.html
index ada4e159..795c613 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.stroke.join.3.html
@@ -19,25 +19,24 @@
 var t = async_test("Shadows are drawn for stroke joins respecting miter limit");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'miter';
-ctx.miterLimit = 0.1;
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3)
-ctx.stroke();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'miter';
+  ctx.miterLimit = 0.1;
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3)
+  ctx.stroke();
 
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.1.html
index 5745051..abfb54e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.1.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadows take account of transformations");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.translate(100, 100);
-ctx.fillRect(-100, -150, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.translate(100, 100);
+  ctx.fillRect(-100, -150, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.2.html
index dc97c0672..736dd4e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/shadows/2d.shadow.transform.2.html
@@ -19,15 +19,14 @@
 var t = async_test("Shadow offsets are not affected by transformations");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.rotate(Math.PI)
-ctx.fillRect(-100, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.rotate(Math.PI)
+  ctx.fillRect(-100, 0, 100, 50);
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.default.html
index 5c725d4..d32f783 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.default.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
-
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.invalid.html
index 7c69b5a..7b7f337 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.invalid.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'bogus';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'bogus';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'END';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'END';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'end ';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'end ';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'end\0';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
-
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'end\0';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.valid.html
index c8fb253a..a568530 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.align.valid.html
@@ -19,21 +19,20 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.textAlign = 'start';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'end';
-_assertSame(ctx.textAlign, 'end', "ctx.textAlign", "'end'");
+  ctx.textAlign = 'end';
+  _assertSame(ctx.textAlign, 'end', "ctx.textAlign", "'end'");
 
-ctx.textAlign = 'left';
-_assertSame(ctx.textAlign, 'left', "ctx.textAlign", "'left'");
+  ctx.textAlign = 'left';
+  _assertSame(ctx.textAlign, 'left', "ctx.textAlign", "'left'");
 
-ctx.textAlign = 'right';
-_assertSame(ctx.textAlign, 'right', "ctx.textAlign", "'right'");
+  ctx.textAlign = 'right';
+  _assertSame(ctx.textAlign, 'right', "ctx.textAlign", "'right'");
 
-ctx.textAlign = 'center';
-_assertSame(ctx.textAlign, 'center', "ctx.textAlign", "'center'");
-
+  ctx.textAlign = 'center';
+  _assertSame(ctx.textAlign, 'center', "ctx.textAlign", "'center'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.default.html
index 8e44225..08e8512 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.default.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
-
+  _assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.invalid.html
index 1b31ce1..e527a772 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.invalid.html
@@ -19,22 +19,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'bogus';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'bogus';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'MIDDLE';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'MIDDLE';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'middle ';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'middle ';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'middle\0';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
-
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'middle\0';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.valid.html
index 3e1cb35..238f6ff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.baseline.valid.html
@@ -19,24 +19,23 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.textBaseline = 'top';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'hanging';
-_assertSame(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'");
+  ctx.textBaseline = 'hanging';
+  _assertSame(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'");
 
-ctx.textBaseline = 'middle';
-_assertSame(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'");
+  ctx.textBaseline = 'middle';
+  _assertSame(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'");
 
-ctx.textBaseline = 'alphabetic';
-_assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
+  ctx.textBaseline = 'alphabetic';
+  _assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
 
-ctx.textBaseline = 'ideographic';
-_assertSame(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'");
+  ctx.textBaseline = 'ideographic';
+  _assertSame(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'");
 
-ctx.textBaseline = 'bottom';
-_assertSame(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'");
-
+  ctx.textBaseline = 'bottom';
+  _assertSame(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html
index 5bbd90f..0f70a47 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html
@@ -26,22 +26,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'alphabetic';
-    ctx.fillText('CC', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'alphabetic';
+      ctx.fillText('CC', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html
index 311be39..706d774 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html
@@ -26,22 +26,21 @@
 var t = async_test("textBaseline bottom is the bottom of the em square (not the bounding box)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'bottom';
-    ctx.fillText('CC', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'bottom';
+      ctx.fillText('CC', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html
index 65aa7cd..7b3a0a93 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html
@@ -26,22 +26,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'hanging';
-    ctx.fillText('CC', 0, 12.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'hanging';
+      ctx.fillText('CC', 0, 12.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html
index 84f1262..8da9aab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html
@@ -26,22 +26,21 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'ideographic';
-    ctx.fillText('CC', 0, 31.25);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'ideographic';
+      ctx.fillText('CC', 0, 31.25);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html
index a09a2f31..ebc821c2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html
@@ -26,22 +26,21 @@
 var t = async_test("textBaseline middle is the middle of the em square (not the bounding box)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'middle';
-    ctx.fillText('CC', 0, 25);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'middle';
+      ctx.fillText('CC', 0, 25);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.top.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.top.html
index b0c72c41..21e505ec7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.top.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.top.html
@@ -26,22 +26,21 @@
 var t = async_test("textBaseline top is the top of the em square (not the bounding box)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'top';
-    ctx.fillText('CC', 0, 0);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'top';
+      ctx.fillText('CC', 0, 0);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html
index 57de14a..15b802f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html
@@ -26,18 +26,17 @@
 var t = async_test("Space characters at the end of a line are collapsed (per CSS)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'right';
-    ctx.fillText('EE ', 100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'right';
+      ctx.fillText('EE ', 100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html
index e593b97..3454cfb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html
@@ -26,17 +26,16 @@
 var t = async_test("Space characters are converted to U+0020, and collapsed (per CSS)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dEE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dEE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html
index 6e24007..20c5f705 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html
@@ -26,17 +26,16 @@
 var t = async_test("Space characters are converted to U+0020, and collapsed (per CSS)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E  EE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E  EE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html
index 5ec776e..c06efba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html
@@ -26,17 +26,16 @@
 var t = async_test("Space characters at the start of a line are collapsed (per CSS)");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50px CanvasTest';
-deferTest();
-step_timeout(t.step_func_done(function () {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText(' EE', 0, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-}), 500);
-
+  ctx.font = '50px CanvasTest';
+  deferTest();
+  step_timeout(t.step_func_done(function () {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText(' EE', 0, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+  }), 500);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.default.html
index 135c9bd..c6ac084 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.default.html
@@ -19,8 +19,7 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
-
+  _assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.basic.html
index 57db32b..70efec77 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.basic.html
@@ -19,12 +19,11 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '20px serif';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20PX   SERIF';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
-
+  ctx.font = '20PX   SERIF';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.complex.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.complex.html
index cd6235e..7f11506 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.complex.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.complex.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
-_assertSame(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'");
-
+  ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
+  _assertSame(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.family.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.family.html
index f5c24bd..c53bedb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.family.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.family.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
-_assertSame(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'");
-
+  ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
+  _assertSame(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.invalid.html
index e273544..4fef0b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.invalid.html
@@ -19,53 +19,52 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '20px serif';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'bogus';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'bogus';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'inherit';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'inherit';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px {bogus}';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px {bogus}';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px initial';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px initial';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px default';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px default';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px inherit';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px inherit';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px revert';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px revert';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'var(--x)';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'var(--x)';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'var(--x, 10px serif)';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'var(--x, 10px serif)';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '1em serif; background: green; margin: 10px';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
-
+  ctx.font = '20px serif';
+  ctx.font = '1em serif; background: green; margin: 10px';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html
index 65bb5549..cb245f1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html
@@ -19,11 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-var ctx2 = canvas2.getContext('2d');
-ctx2.font = '1000% serif';
-_assertSame(ctx2.font, '100px serif', "ctx2.font", "'100px serif'");
-
+  var canvas2 = document.createElement('canvas');
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.font = '1000% serif';
+  _assertSame(ctx2.font, '100px serif', "ctx2.font", "'100px serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
index 18476b3..519a1eb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
@@ -19,11 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '50% serif';
-_assertSame(ctx.font, '72px serif', "ctx.font", "'72px serif'");
-canvas.setAttribute('style', 'font-size: 100px');
-_assertSame(ctx.font, '72px serif', "ctx.font", "'72px serif'");
-
+  ctx.font = '50% serif';
+  _assertSame(ctx.font, '72px serif', "ctx.font", "'72px serif'");
+  canvas.setAttribute('style', 'font-size: 100px');
+  _assertSame(ctx.font, '72px serif', "ctx.font", "'72px serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.system.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.system.html
index 707be4e..10fa0cb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.system.html
@@ -19,9 +19,8 @@
 var t = async_test("System fonts must be computed to explicit values");
 _addTest(function(canvas, ctx) {
 
-ctx.font = 'message-box';
-_assertDifferent(ctx.font, 'message-box', "ctx.font", "'message-box'");
-
+  ctx.font = 'message-box';
+  _assertDifferent(ctx.font, 'message-box', "ctx.font", "'message-box'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.tiny.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.tiny.html
index e5215f1..10c9d2a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.tiny.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.parse.tiny.html
@@ -19,9 +19,8 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-ctx.font = '1px sans-serif';
-_assertSame(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'");
-
+  ctx.font = '1px sans-serif';
+  _assertSame(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.relative_size.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.relative_size.html
index 8040d389..97b9718 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.relative_size.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.font.relative_size.html
@@ -19,11 +19,10 @@
 var t = async_test("");
 _addTest(function(canvas, ctx) {
 
-var canvas2 = document.createElement('canvas');
-var ctx2 = canvas2.getContext('2d');
-ctx2.font = '1em sans-serif';
-_assertSame(ctx2.font, '10px sans-serif', "ctx2.font", "'10px sans-serif'");
-
+  var canvas2 = document.createElement('canvas');
+  var ctx2 = canvas2.getContext('2d');
+  ctx2.font = '1em sans-serif';
+  _assertSame(ctx2.font, '10px sans-serif', "ctx2.font", "'10px sans-serif'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.measure.width.space.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.measure.width.space.html
index 4d7ee4ef..b6f2ef5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.measure.width.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/text-styles/2d.text.measure.width.space.html
@@ -26,22 +26,21 @@
 var t = async_test("Space characters are converted to U+0020 and collapsed (per CSS)");
 _addTest(function(canvas, ctx) {
 
-deferTest();
-var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
-document.fonts.add(f);
-document.fonts.ready.then(() => {
-    step_timeout(t.step_func_done(function () {
-        ctx.font = '50px CanvasTest';
-        _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
-        _assertSame(ctx.measureText('A  B').width, 200, "ctx.measureText('A  B').width", "200");
-        _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d  \\x09\\x0a\\x0c\\x0dB').width", "150");
-        _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
+  deferTest();
+  var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
+  document.fonts.add(f);
+  document.fonts.ready.then(() => {
+      step_timeout(t.step_func_done(function () {
+          ctx.font = '50px CanvasTest';
+          _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
+          _assertSame(ctx.measureText('A  B').width, 200, "ctx.measureText('A  B').width", "200");
+          _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d  \\x09\\x0a\\x0c\\x0dB').width", "150");
+          _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
 
-        _assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
-        _assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
-    }), 500);
-});
-
+          _assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
+          _assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
+      }), 500);
+  });
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html
index 459e0d54..6814679 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.bitmap.html
@@ -19,14 +19,13 @@
 var t = async_test("save()/restore() does not affect the current bitmap");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.restore();
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.restore();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html
index 6d1ab02..1ce44ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.clip.html
@@ -19,16 +19,15 @@
 var t = async_test("save()/restore() affects the clipping path");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.rect(0, 0, 1, 1);
-ctx.clip();
-ctx.restore();
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.rect(0, 0, 1, 1);
+  ctx.clip();
+  ctx.restore();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.fillStyle.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.fillStyle.html
index a57274c..1eb8360 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.fillStyle.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.fillStyle.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for fillStyle");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.fillStyle;
-ctx.save();
-ctx.fillStyle = "#ff0000";
-ctx.restore();
-_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.fillStyle;
+  ctx.save();
+  ctx.fillStyle = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
 
-// Also test that save() doesn't modify the values
-ctx.fillStyle = "#ff0000";
-old = ctx.fillStyle;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.fillStyle = "#ff0000";
+  old = ctx.fillStyle;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.font.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.font.html
index ff674ac3..8cb4d17 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.font.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.font.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for font");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.font;
-ctx.save();
-ctx.font = "25px serif";
-ctx.restore();
-_assertSame(ctx.font, old, "ctx.font", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.font;
+  ctx.save();
+  ctx.font = "25px serif";
+  ctx.restore();
+  _assertSame(ctx.font, old, "ctx.font", "old");
 
-// Also test that save() doesn't modify the values
-ctx.font = "25px serif";
-old = ctx.font;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "25px serif"
-ctx.save();
-_assertSame(ctx.font, old, "ctx.font", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.font = "25px serif";
+  old = ctx.font;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "25px serif"
+  ctx.save();
+  _assertSame(ctx.font, old, "ctx.font", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalAlpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalAlpha.html
index db48f96..f3dae5f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalAlpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalAlpha.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for globalAlpha");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.globalAlpha;
-ctx.save();
-ctx.globalAlpha = 0.5;
-ctx.restore();
-_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.globalAlpha;
+  ctx.save();
+  ctx.globalAlpha = 0.5;
+  ctx.restore();
+  _assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
 
-// Also test that save() doesn't modify the values
-ctx.globalAlpha = 0.5;
-old = ctx.globalAlpha;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.globalAlpha = 0.5;
+  old = ctx.globalAlpha;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
index cbc4198b..fed0cee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for globalCompositeOperation");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.globalCompositeOperation;
-ctx.save();
-ctx.globalCompositeOperation = "copy";
-ctx.restore();
-_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.globalCompositeOperation;
+  ctx.save();
+  ctx.globalCompositeOperation = "copy";
+  ctx.restore();
+  _assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
 
-// Also test that save() doesn't modify the values
-ctx.globalCompositeOperation = "copy";
-old = ctx.globalCompositeOperation;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "copy"
-ctx.save();
-_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.globalCompositeOperation = "copy";
+  old = ctx.globalCompositeOperation;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "copy"
+  ctx.save();
+  _assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineCap.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineCap.html
index fafbde62..90c52ce 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineCap.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineCap.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for lineCap");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.lineCap;
-ctx.save();
-ctx.lineCap = "round";
-ctx.restore();
-_assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineCap;
+  ctx.save();
+  ctx.lineCap = "round";
+  ctx.restore();
+  _assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineCap = "round";
-old = ctx.lineCap;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "round"
-ctx.save();
-_assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.lineCap = "round";
+  old = ctx.lineCap;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "round"
+  ctx.save();
+  _assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineJoin.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineJoin.html
index 46d3ec6..00495d9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineJoin.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineJoin.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for lineJoin");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.lineJoin;
-ctx.save();
-ctx.lineJoin = "round";
-ctx.restore();
-_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineJoin;
+  ctx.save();
+  ctx.lineJoin = "round";
+  ctx.restore();
+  _assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineJoin = "round";
-old = ctx.lineJoin;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "round"
-ctx.save();
-_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.lineJoin = "round";
+  old = ctx.lineJoin;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "round"
+  ctx.save();
+  _assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineWidth.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineWidth.html
index ac96381..0705878 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineWidth.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.lineWidth.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for lineWidth");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.lineWidth;
-ctx.save();
-ctx.lineWidth = 0.5;
-ctx.restore();
-_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineWidth;
+  ctx.save();
+  ctx.lineWidth = 0.5;
+  ctx.restore();
+  _assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineWidth = 0.5;
-old = ctx.lineWidth;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.lineWidth = 0.5;
+  old = ctx.lineWidth;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.miterLimit.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.miterLimit.html
index ab3c55ea..efd2207 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.miterLimit.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.miterLimit.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for miterLimit");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.miterLimit;
-ctx.save();
-ctx.miterLimit = 0.5;
-ctx.restore();
-_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.miterLimit;
+  ctx.save();
+  ctx.miterLimit = 0.5;
+  ctx.restore();
+  _assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
 
-// Also test that save() doesn't modify the values
-ctx.miterLimit = 0.5;
-old = ctx.miterLimit;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.miterLimit = 0.5;
+  old = ctx.miterLimit;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html
index a8023f1..5848ae5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.path.html
@@ -19,15 +19,14 @@
 var t = async_test("save()/restore() does not affect the current path");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.rect(0, 0, 100, 50);
-ctx.restore();
-ctx.fillStyle = '#0f0';
-ctx.fill();
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.rect(0, 0, 100, 50);
+  ctx.restore();
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowBlur.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowBlur.html
index 2525271..c5699b7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowBlur.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowBlur.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for shadowBlur");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowBlur;
-ctx.save();
-ctx.shadowBlur = 5;
-ctx.restore();
-_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowBlur;
+  ctx.save();
+  ctx.shadowBlur = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowBlur = 5;
-old = ctx.shadowBlur;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowBlur = 5;
+  old = ctx.shadowBlur;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowColor.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowColor.html
index 64690e3..9b6a435 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowColor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowColor.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for shadowColor");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowColor;
-ctx.save();
-ctx.shadowColor = "#ff0000";
-ctx.restore();
-_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowColor;
+  ctx.save();
+  ctx.shadowColor = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowColor = "#ff0000";
-old = ctx.shadowColor;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowColor = "#ff0000";
+  old = ctx.shadowColor;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetX.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
index a140c3fa0..427a44a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for shadowOffsetX");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowOffsetX;
-ctx.save();
-ctx.shadowOffsetX = 5;
-ctx.restore();
-_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowOffsetX;
+  ctx.save();
+  ctx.shadowOffsetX = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowOffsetX = 5;
-old = ctx.shadowOffsetX;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowOffsetX = 5;
+  old = ctx.shadowOffsetX;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetY.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
index 8fc9b7c..b711445 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for shadowOffsetY");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowOffsetY;
-ctx.save();
-ctx.shadowOffsetY = 5;
-ctx.restore();
-_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowOffsetY;
+  ctx.save();
+  ctx.shadowOffsetY = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowOffsetY = 5;
-old = ctx.shadowOffsetY;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowOffsetY = 5;
+  old = ctx.shadowOffsetY;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stack.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stack.html
index 252074f..122c5434 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stack.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stack.html
@@ -19,17 +19,16 @@
 var t = async_test("save()/restore() can be nested as a stack");
 _addTest(function(canvas, ctx) {
 
-ctx.lineWidth = 1;
-ctx.save();
-ctx.lineWidth = 2;
-ctx.save();
-ctx.lineWidth = 3;
-_assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3");
-ctx.restore();
-_assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2");
-ctx.restore();
-_assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1");
-
+  ctx.lineWidth = 1;
+  ctx.save();
+  ctx.lineWidth = 2;
+  ctx.save();
+  ctx.lineWidth = 3;
+  _assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3");
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2");
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stackdepth.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stackdepth.html
index 433e83c..6fa591d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stackdepth.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.stackdepth.html
@@ -19,18 +19,17 @@
 var t = async_test("save()/restore() stack depth is not unreasonably limited");
 _addTest(function(canvas, ctx) {
 
-var limit = 512;
-for (var i = 1; i < limit; ++i)
-{
-    ctx.save();
-    ctx.lineWidth = i;
-}
-for (var i = limit-1; i > 0; --i)
-{
-    _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i");
-    ctx.restore();
-}
-
+  var limit = 512;
+  for (var i = 1; i < limit; ++i)
+  {
+      ctx.save();
+      ctx.lineWidth = i;
+  }
+  for (var i = limit-1; i > 0; --i)
+  {
+      _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i");
+      ctx.restore();
+  }
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.strokeStyle.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.strokeStyle.html
index aeae2f8..9ccaac7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.strokeStyle.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.strokeStyle.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for strokeStyle");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.strokeStyle;
-ctx.save();
-ctx.strokeStyle = "#ff0000";
-ctx.restore();
-_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.strokeStyle;
+  ctx.save();
+  ctx.strokeStyle = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
 
-// Also test that save() doesn't modify the values
-ctx.strokeStyle = "#ff0000";
-old = ctx.strokeStyle;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.strokeStyle = "#ff0000";
+  old = ctx.strokeStyle;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textAlign.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textAlign.html
index 3bac234..a86d62a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textAlign.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textAlign.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for textAlign");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.textAlign;
-ctx.save();
-ctx.textAlign = "center";
-ctx.restore();
-_assertSame(ctx.textAlign, old, "ctx.textAlign", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.textAlign;
+  ctx.save();
+  ctx.textAlign = "center";
+  ctx.restore();
+  _assertSame(ctx.textAlign, old, "ctx.textAlign", "old");
 
-// Also test that save() doesn't modify the values
-ctx.textAlign = "center";
-old = ctx.textAlign;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "center"
-ctx.save();
-_assertSame(ctx.textAlign, old, "ctx.textAlign", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.textAlign = "center";
+  old = ctx.textAlign;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "center"
+  ctx.save();
+  _assertSame(ctx.textAlign, old, "ctx.textAlign", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textBaseline.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textBaseline.html
index 238ee7e..5cbf712 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textBaseline.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.textBaseline.html
@@ -19,22 +19,21 @@
 var t = async_test("save()/restore() works for textBaseline");
 _addTest(function(canvas, ctx) {
 
-// Test that restore() undoes any modifications
-var old = ctx.textBaseline;
-ctx.save();
-ctx.textBaseline = "bottom";
-ctx.restore();
-_assertSame(ctx.textBaseline, old, "ctx.textBaseline", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.textBaseline;
+  ctx.save();
+  ctx.textBaseline = "bottom";
+  ctx.restore();
+  _assertSame(ctx.textBaseline, old, "ctx.textBaseline", "old");
 
-// Also test that save() doesn't modify the values
-ctx.textBaseline = "bottom";
-old = ctx.textBaseline;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "bottom"
-ctx.save();
-_assertSame(ctx.textBaseline, old, "ctx.textBaseline", "old");
-ctx.restore();
-
+  // Also test that save() doesn't modify the values
+  ctx.textBaseline = "bottom";
+  old = ctx.textBaseline;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "bottom"
+  ctx.save();
+  _assertSame(ctx.textBaseline, old, "ctx.textBaseline", "old");
+  ctx.restore();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html
index 6d035ef..6edee8a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.transformation.html
@@ -19,15 +19,14 @@
 var t = async_test("save()/restore() affects the current transformation matrix");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.translate(200, 0);
-ctx.restore();
-ctx.fillStyle = '#f00';
-ctx.fillRect(-200, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.translate(200, 0);
+  ctx.restore();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(-200, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.underflow.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.underflow.html
index bbf6433..763f269 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.underflow.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.underflow.html
@@ -19,12 +19,11 @@
 var t = async_test("restore() with an empty stack has no effect");
 _addTest(function(canvas, ctx) {
 
-for (var i = 0; i < 16; ++i)
-    ctx.restore();
-ctx.lineWidth = 0.5;
-ctx.restore();
-_assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5");
-
+  for (var i = 0; i < 16; ++i)
+      ctx.restore();
+  ctx.lineWidth = 0.5;
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.html
index 0dad085..453d5e7f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'clear';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'clear';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.worker.js
index a06cbdc2..8640778 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.clear.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'clear';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'clear';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html
index a89736b..a54b09bb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'copy';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'copy';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js
index a8fbc74..42d7ec2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.copy.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'copy';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'copy';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html
index dc53e8b..d88afa5d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-atop';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-atop';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js
index fcb9445..96627b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-atop.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-atop';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-atop';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html
index 73140e1..54223ee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-in';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-in';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js
index e5d7f0b..525ca84f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-in.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-in';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-in';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html
index 5f89aa2..1b9b88a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-out';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-out';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js
index a4436be..aaaadd7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-out.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-out';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-out';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html
index d18f9dc..44d6a5b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-over';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-over';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js
index 967e47b3..b13e7b1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.destination-over.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'destination-over';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'destination-over';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html
index 9de44ad..65186a7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'lighter';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'lighter';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js
index 849d4a6..e8dd516d2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.lighter.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'lighter';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'lighter';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html
index cf9d5cf..2d0b6a6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-atop';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-atop';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js
index 7601db1..f40ef449 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-atop.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-atop';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-atop';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html
index 30864d6..28cdc267 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-in';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-in';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js
index 5b21b35..4f116ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-in';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-in';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html
index d698540..25d5e07 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-out';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-out';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js
index cf5b0a9..ce1bdd9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-out.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-out';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-out';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html
index e1e86c7..8e6b686 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-over';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-over';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js
index d61ebd1..7f4355c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.source-over.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'source-over';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'source-over';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html
index c2d1f52..a15811a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.html
@@ -17,31 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'xor';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'xor';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js
index 1b2286a8..929f6f7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js
@@ -13,31 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
-var ctx2 = offscreenCanvas2.getContext('2d');
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx2.drawImage(bitmap, 0, 0);
-        ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.globalCompositeOperation = 'xor';
-        ctx.drawImage(offscreenCanvas2, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx2.drawImage(bitmap, 0, 0);
+          ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.globalCompositeOperation = 'xor';
+          ctx.drawImage(offscreenCanvas2, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.html
index 842bcf1..f0e9989 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.worker.js
index 7365ecc3..abae05ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.clear.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.html
index 5d6afc1..2471cd7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js
index 3158893..dfebd98 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.copy.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html
index 93d4d70..efb5e7a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js
index 78b5368..9c8fa79c5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-atop.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html
index d252037..bc467a1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js
index bc12026..a98624f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-in.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html
index fdb1792..674ec3a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js
index ebe3a70..0cf915d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-out.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html
index ae4cb49..6abd0af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js
index fb8778f..b1b5eee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.destination-over.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html
index 1f705f2..00782a6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js
index f6bf4c4..8576d9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.lighter.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html
index eb54747..a7dc6a3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js
index fec34e1..fd220f52 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-atop.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html
index cdc814f..3f24076 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js
index b9a67cef..0c61fb7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-in.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html
index 9df047f..4033893b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js
index 9d252406..ec57663 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-out.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html
index 522f4f9..5b48161 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js
index 6d401c4..15c322e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.html
index dc1170d..0156e4a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.html
@@ -17,20 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js
index 1d89becc..30bae44 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.worker.js
@@ -13,20 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.rect(-20, -20, 10, 10);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.rect(-20, -20, 10, 10);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.html
index 5858e8f..75115ce7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.worker.js
index 13765474..9a9ff0ec7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.clear.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.html
index 1aa9c98..4cb9c474 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js
index ba3399a..8fe345d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.copy.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html
index 76547a1..a86950c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js
index 677b882b..8b862a0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-atop.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 128,255,128,191, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html
index 8fa5786..0415cbc7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js
index aa8c1ac0..1f580cd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-in.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html
index 3a4da68..6c183fd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js
index 94ac27a0..d364abf8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-out.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 0,255,255,32, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html
index c6da28db..3ace58d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js
index 3bc357d..7ee7d94 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.destination-over.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 109,255,146,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.html
index db89e5a3..9c50789 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js
index 922b5f46..aa55199 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.lighter.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,128,255, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html
index 44dd6f4..a87385b2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js
index 1b329938..b0ee8d86 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-atop.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.html
index 64c28c0..bd1d09f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js
index 3048f84..201c9bc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-in.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.html
index 46d3e48..e31cf734 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js
index 090bbe7..16ed7c48 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-out.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 255,255,0,96, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.html
index 1d13b77..f4a871a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js
index 7937e5be..a1deadc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.source-over.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 219,255,36,223, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.html
index 73253fa..91e992e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.html
@@ -17,28 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js
index 7a22f7d..a77191f9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.image.xor.worker.js
@@ -13,28 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow75.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0);
-        _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow75.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0);
+          _assertPixelApprox(canvas, 50,25, 191,255,64,128, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.html
index a06565d..9bb03097 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.worker.js
index 983a3b0..c49ec7a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.clear.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.html
index aaad0b41..a5bcda9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js
index 63cc6c1..ee4baec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.copy.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html
index be4cf39..c5554ff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js
index a09827c..8829971 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-atop.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html
index e5ea33b..8e620e2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js
index b06ad63..fe9e4617 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-in.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html
index 49efe24..06da4d3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js
index 3b0232e2..05ec2fa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-out.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html
index c1d7965c..e62c3fe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js
index 99d64be..5c171fc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.destination-over.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,255,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html
index 2877e14..2e09805c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,255,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,255,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js
index 011a1993..3533892 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.lighter.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,255,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,255,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html
index 9f972ed..dd36e0e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js
index 2dc6ec9..27e1c25 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-atop.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html
index c674bbd..83dcc8e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js
index 5b833ec..7dfdb070 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-in.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html
index 0fa403b..3067c44f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js
index 04869399..82525492 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-out.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html
index 4392e60c..0596553 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js
index ce8190e..1c82a95 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.source-over.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 255,255,0,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.html
index a9eb83e..822c9c7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js
index 8b7edec..cb098eb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.solid.xor.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.fillStyle = 'rgba(255, 255, 0, 1.0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.html
index 91ba094..81d781a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.worker.js
index 6624bbc..8f30463c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.clear.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'clear';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'clear';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html
index 20c107b..ab3a972 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,191, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,191, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js
index 7fb646ac..6b9ea9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.copy.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,191, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,191, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html
index 2bc5466..5e580f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,128,128,191, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,128,128,191, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js
index f433bedf..3247632e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-atop.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,128,128,191, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,128,128,191, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html
index 1d11218..9f0ec56 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,96, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,96, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js
index a4c159a..c9205230 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-in.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,96, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,96, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html
index 17b3fec..a1abe3e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,32, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,32, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js
index cf6827f..1a54095 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-out.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,32, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,32, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html
index 04c267a8..4f0305f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,146,109,223, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,146,109,223, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js
index 98a4b5b5..37eb785d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.destination-over.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-over';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,146,109,223, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-over';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,146,109,223, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html
index 86d06f24..6a2f5df7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,128,191,255, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,128,191,255, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js
index f9b419a..3d890aff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'lighter';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,128,191,255, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'lighter';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,128,191,255, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html
index f4e79c0..bac035c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js
index db65db8..d56ef6e2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-atop.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html
index 56b4e77..5dd6704 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js
index 32765c4..58ad13b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-in.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html
index cca28c5e..56b1d4a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js
index 3cf507b..62ec89595 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-out.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,255,96, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html
index a8ae301..f038d44 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,36,219,223, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,36,219,223, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js
index 35545c0..494a45f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.source-over.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-over';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,36,219,223, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-over';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,36,219,223, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html
index 638bae0..bbab8a0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js
index b21d30d..4b65667 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.transparent.xor.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,64,191,128, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html
index f10275f..0ff9d851dd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.html
@@ -17,18 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js
index 3b86c720..50f3ed0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.copy.worker.js
@@ -13,18 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html
index 8672e9e..2d2f92ed 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.html
@@ -17,18 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js
index 69610fc1..9a84b089 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-atop.worker.js
@@ -13,18 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html
index 0f069372..5670b32 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.html
@@ -18,18 +18,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js
index 26b2871..aa24ba9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.destination-in.worker.js
@@ -14,18 +14,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html
index 6e1ecdd..58347442 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.html
@@ -17,18 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js
index 6da9865..33e326d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-in.worker.js
@@ -13,18 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html
index de16897..ea44ca4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.html
@@ -17,18 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js
index 515b587..1d39b36 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.fill.source-out.worker.js
@@ -13,18 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
-ctx.translate(0, 25);
-ctx.fillRect(0, 50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  ctx.fillStyle = 'rgba(0, 0, 255, 0.75)';
+  ctx.translate(0, 25);
+  ctx.fillRect(0, 50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html
index 5f3c9a191..a3f0095 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js
index 2faecdf..05a208e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.copy.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html
index 3605e44..e46d8c0c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js
index 8b361e0..3662f862 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-atop.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html
index c48ee8e1..41c1c73 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js
index b270efc7..d7cd348 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.destination-in.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html
index af4c3b7..51c92d5d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js
index 5fe00cf1..02397f0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-in.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html
index 4f1c386..29227f2a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js
index f93185bc..70acee3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.image.source-out.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
-        _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 40, 40, 10, 10, 40, 50, 10, 10);
+          _assertPixelApprox(canvas, 15,15, 0,0,0,0, 5);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html
index 57c499d8..10a9960 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js
index bf6bdfe..1f285eae4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.copy.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html
index 73684800..ead1299 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js
index 3574add7..a9beb0f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html
index b41c4b7..0322bfe2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js
index 979a084..e146e2e9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html
index 99aeefb..0d93a036 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js
index 55596f8..cce4b54b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-in.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html
index 0dfd4ae..b6ab8cbd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.html
@@ -17,17 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js
index f0820e0..501a84f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.nocontext.source-out.worker.js
@@ -13,17 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-ctx.drawImage(offscreenCanvas2, 0, 0);
-_assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-t.done();
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  ctx.drawImage(offscreenCanvas2, 0, 0);
+  _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html
index 244cc82f5..6d9a23b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js
index 3aeddac..d3b6e07 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.copy.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'copy';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'copy';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html
index 3624f1b..e5cb129 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js
index 86aaf9fb..83bd328b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-atop';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-atop';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html
index 21990f1..ef55aa72 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js
index 184efcd7..c599c3d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.destination-in.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html
index f95da54..98ba8bb1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js
index 61c798b7..1017869 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-in.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-in';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-in';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html
index 4eb6ba5..bdd17f9e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html
@@ -17,29 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js
index 5827c7a..764a0941 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.worker.js
@@ -13,29 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'source-out';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/yellow.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillRect(0, 50, 100, 50);
-        _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'source-out';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/yellow.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillRect(0, 50, 100, 50);
+          _assertPixelApprox(canvas, 50,25, 0,0,0,0, 5);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html
index af5b0417..8e488a5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.CSSHSL.html
@@ -17,29 +17,35 @@
 });
 t.step(function() {
 
-var offscreenCanvas = new OffscreenCanvas(100, 50);
-var ctx = offscreenCanvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5);
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(offscreenCanvas, 50,25, 64,191,191,255, 3);
+  ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5);
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 64,191,191,255, 3);
 
-const color = new CSSHSL(CSS.deg(180), 1, 1);
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(offscreenCanvas, 50,25, 255,255,255,255);
-color.l = 0.5;
-ctx.fillStyle = color;
-_assertSame(ctx.fillStyle, '#00ffff', "ctx.fillStyle", "'#00ffff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(offscreenCanvas, 50,25, 0,255,255,255);
+  const color = new CSSHSL(CSS.deg(180), 1, 1);
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, '#ffffff', "ctx.fillStyle", "'#ffffff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
+  color.l = 0.5;
+  ctx.fillStyle = color;
+  _assertSame(ctx.fillStyle, '#00ffff', "ctx.fillStyle", "'#00ffff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,255,255);
 
-ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL();
-_assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'");
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(offscreenCanvas, 50,25, 255,0,255,255);
-t.done();
+  ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL();
+  _assertSame(ctx.fillStyle, '#ff00ff', "ctx.fillStyle", "'#ff00ff'");
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,0,255,255);
+
+  color.h = CSS.deg(120);
+  color.s = 1;
+  color.l = 0.5;
+  ctx.fillStyle = color;
+  ctx.fillRect(0, 0, 100, 50);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.html
index 3a3b6a97..5807516 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
-t.done();
+  _assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.worker.js
index 95ae259..34a6f12 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.default.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
-t.done();
-
+  _assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html
index 68b09d06..cd0b0c2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = 'rgba(255,255,255,0.5)';
-_assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'");
-t.done();
+  ctx.fillStyle = 'rgba(255,255,255,0.5)';
+  _assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js
index de8f491..7590816 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.halftransparent.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = 'rgba(255,255,255,0.5)';
-_assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'");
-t.done();
-
+  ctx.fillStyle = 'rgba(255,255,255,0.5)';
+  _assertSame(ctx.fillStyle, 'rgba(255, 255, 255, 0.5)', "ctx.fillStyle", "'rgba(255, 255, 255, 0.5)'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
index 9f85668..6be295a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = 'rgba(255,255,255,0.45)';
-assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/);
-t.done();
+  ctx.fillStyle = 'rgba(255,255,255,0.45)';
+  assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js
index 3715183..1c25bc2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = 'rgba(255,255,255,0.45)';
-assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/);
-t.done();
-
+  ctx.fillStyle = 'rgba(255,255,255,0.45)';
+  assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.html
index 3eca93e..4d8ccc0ff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#fa0';
-_assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'");
-t.done();
+  ctx.fillStyle = '#fa0';
+  _assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js
index 2ada733..efec71c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#fa0';
-_assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'");
-t.done();
-
+  ctx.fillStyle = '#fa0';
+  _assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
index caab8e02..8fe102f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = 'rgba(0,0,0,0)';
-_assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
-t.done();
+  ctx.fillStyle = 'rgba(0,0,0,0)';
+  _assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js
index 57f5facf..51542bad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = 'rgba(0,0,0,0)';
-_assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
-t.done();
-
+  ctx.fillStyle = 'rgba(0,0,0,0)';
+  _assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
index 260554c..a30bc4a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillStyle = 'invalid';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillStyle = 'invalid';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js
index 4e4df4f..f2f5ccac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillStyle = 'invalid';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillStyle = 'invalid';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
index 53c0f77..23814ae8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillStyle = null;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillStyle = null;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js
index 19b3120..13e10e12 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillStyle = null;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillStyle = null;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
index d4a2466..222d7f6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js
index 074d796..7413788 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
index 6853ae51..b2c93c1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js
index a4226cf..3ccd75a4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
index 62f4e48e..fc87269 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js
index de3e379..bfaba36 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
index 082ddcd..71cb327 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js
index 2714bdf..afe1265 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
index 55f92e1..787d5e76 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js
index ef3fe13..05c77b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
index 74657fc..8acc67f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js
index a36af9a..8ff0839 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
index 419b15f7..dc295d0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js
index 10da114..9d0513f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
index a5acc80..50970585 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js
index e12f963..ce56342 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
index dc184153..47cd157c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js
index 51de0e0..e45f559 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
index 84b8061..2d1e46f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js
index 2d7abab3..2a1157e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
index a3f2c67..f5531f6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js
index dd66b1d..23cd58d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
index 5b809ba5..fde2328 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js
index 7ef6d8f..64577bc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
index 3e06366..3b6e1f13 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js
index ed1dec0..05b08f0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
index 34f626a..b0677c16 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js
index 8904226..51484f3a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
index 3c1a23bf..809d11c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js
index 645081d..7b224e5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
index cc874e8f..48c3c69 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js
index f42602e..ed51a5df4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
index 7501436..f49b313 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js
index 376cb94c..c61fb1a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
index f759e69..68c4e22 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js
index 58f4041..51541b7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
index 4464875..c9d75ca 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255.0, 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255.0, 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js
index 34ecf3d..f0a67250 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255.0, 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255.0, 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
index 328d731..0acc23e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js
index 958d5df35..eb6b952 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
index 1dc99c2..85c2606c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js
index f82df16..9db5b7c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
index 1b72c4f..e028260e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js
index 08dba89..fecb3ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
index 9044fe8..51ace91 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0 / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0 / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js
index 27ccca6..03948b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0 / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0 / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
index 66cb908..6df2f914 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0 / 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0 / 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js
index 3ff4312..5f31d9a9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0 255 0 / 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0 255 0 / 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
index a0d2239..19d726e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255.0, 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255.0, 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js
index ef45434c..24f27822 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255.0, 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255.0, 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
index 96dcbf6..1603ae93 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js
index e03f5252..fcda86ba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
index f972e83..53ad717 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js
index 3bc693f2..164f17f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
index 6825e865..3dc9f9c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js
index a50cc026..da512a261 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
index 7c8b19c..db0e891f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0 / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0 / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js
index e134e34..7f10cba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0 / 0.2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0 / 0.2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
index b63b46f..c4ec462 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0 / 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0 / 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js
index 3e401de..2d81992 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0 255 0 / 20%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,51);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0 255 0 / 20%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,51);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
index 90d3e60..90c4d4f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js
index 9f0d0a4..7ee281b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
index d10e3a8..8a6260fa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#0f0f';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#0f0f';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js
index fa84ca1..53001f9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#0f0f';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#0f0f';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
index 69394c9..02f698e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#00fF00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#00fF00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js
index cb432b4..e9420b62 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#00fF00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#00fF00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
index 80abfe3..1563bab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#00ff00ff';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#00ff00ff';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js
index e114569..35cdc5c2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = '#00ff00ff';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = '#00ff00ff';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
index 65e5c18..96e6515 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js
index 83d507c..204df1a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
index fdd78ad..b6f8f2b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl( -240 , 100% , 50% )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl( -240 , 100% , 50% )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js
index 0dfc848..f282d3c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl( -240 , 100% , 50% )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl( -240 , 100% , 50% )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
index 51692444..5ed3b96 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(360120, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(360120, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js
index 54dec44..a4abd30 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(360120, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(360120, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
index 90f30ab..f91edd7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(-360240, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(-360240, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js
index 43c2066..19cbfd08 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(-360240, 100%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(-360240, 100%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
index 7760e23..c4624da 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js
index d4c95c1..49689b8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
index 7950929..5baa5b3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(+120, +100%, +50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(+120, +100%, +50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js
index f5acc2d..9f99d964 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(+120, +100%, +50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(+120, +100%, +50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
index 1b37546..db43c45d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 200%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 200%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js
index cc3308d7..868beda 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 200%, 50%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 200%, 50%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
index 0133f7f..a5b399a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, -200%, 49.9%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 127,127,127,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, -200%, 49.9%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 127,127,127,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js
index 48c23aa1..2f1d2d72 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, -200%, 49.9%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 127,127,127,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, -200%, 49.9%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 127,127,127,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
index e35355c..cfa6d823 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, 200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, 200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js
index ef1ac418..4c71d6d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, 200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, 200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
index c42b6f1..a3bfd8c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, -200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, -200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js
index 061685d..e4477f5c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsl(120, 100%, -200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsl(120, 100%, -200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
index 0defd457..67a65da 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js
index 64a26e6..c0023682 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
index 0498edd..c63fac5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js
index 6101f0e..aca5d8d9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
index 313ecf2..ebd7661 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 200%, 50%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 200%, 50%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js
index 8724efd..6a29123 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 200%, 50%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 200%, 50%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
index 761471f..91ec5484 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 127,127,127,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 127,127,127,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js
index af4271c..c27c9f8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 127,127,127,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 127,127,127,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
index 287a23a5..343bf8b2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 200%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 200%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js
index 1e10a76d..64f459c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 200%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 255,255,255,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 200%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 255,255,255,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
index a0e420c..c54d4099 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, -200%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, -200%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js
index e746bc3..b24163a7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, -200%, 1)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, -200%, 1)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
index 0683719..d068ffa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 50%, 2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 50%, 2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js
index 61d86a8..a10af90a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 50%, 2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 50%, 2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
index a810639..f8f0a78 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 0%, -2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 0%, -2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js
index 57c0d587..da6cd93e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'hsla(120, 100%, 0%, -2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'hsla(120, 100%, 0%, -2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
index 767768a..fc1c1af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'limE';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'limE';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js
index a8b8552..7430608f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'limE';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'limE';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
index 1a227a43..3edffc6d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js
index 20fc879b..054568e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
index 36b95ed2..477b318 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js
index c2c6fc0..74d6904f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
index d208c62..e209266 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js
index c2f90ef..7e930df4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
index 2fba5aaf..5bcc175 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js
index 6903ae9..cca9d52a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
index f340a52..ba465408 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js
index 8f0cfc0..5c17b9ee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
index 834a1b7b..a5f8f3f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js
index 45e0743..1ab7e71 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
index cd33bbf..bd54322 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js
index e0d7571..9f1aeed 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
index fd01b762..e33b9415 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js
index 4adb92bb..c06a319 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
index f1e1b2a..8fbbc7a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js
index 450556b..a728e8d3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
index dc22f99..adc82974 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js
index 35217d1..da9b95c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
index 434c15ec..4d385d5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js
index 28200cf..eee7fb9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
index 58ed0e7..6b855b43 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js
index 1830996..2b25416 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
index 9564373..13fadb9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js
index 4591bbde..7932932 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
index 5ae093e..5353f77 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js
index d9a315c..ef559c45 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
index 036f389..aaa555a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js
index 1fc2f5d..7a06f832 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
index 6635579..e8c0588 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js
index 1eadf91..65ed246 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
index 83e1c41..28a7ff473 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js
index 3807fd33..0cb79048 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
index 453ec4bd..0dcf0f8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js
index 9bb7e2c..d2dd193 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
index c1d4e8c..8e1bd9fa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js
index 4eaa0b0d..805becb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
index 89c23a00..f59991d3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js
index ceffb19..1499fb7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
index 4d62d09b..9567114 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js
index 7225544f..d50daeb4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
index 69dfdc7..b36d0c86 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js
index 2e5a93b..606aa4f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
index 2be93ca..5b38e78 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js
index fbd4a88..92ff04a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
index f67758d4..1eda0c7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js
index fcc230c..4508cc56 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
index 54e6711..9ff3c68 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js
index 3b0bb91..e3cbe47 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
index 7614b8c3..46fac5f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js
index ec906f7..56c36f3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
index 13d19ac..1f05e8d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js
index 370eba2..491b5bd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
index 9f01aa2..dd2cec79 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js
index 9d53d26c9..fef0f0a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
index 23f3806..909e230b1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js
index 98f4b1c..635e0bf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
index 405a0e5..9bb652c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js
index 8718547..efe1aa7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
index ae9d7986..9b553c6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js
index b6a70f2a..757ca91 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
index de12341..d894bc42 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js
index 809c805..be2b2dd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
index beab07b8..8901a112 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js
index 4d2b53b..52d3707 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
index 4ac286e6..ceb6c53a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js
index ef588934..6331a2df 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
index 6b54c18..684a6655 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js
index b66a0741..101646c9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
index 05cfaa9..ebf508f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js
index da51a4a..61e43e0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
index 47aab58..ba1f71b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js
index c167c2b..b1efecd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
index af19e19..a889a387 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js
index 8fe3a9b..e519fff4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
index 300bb85e..e1fb32a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js
index 3c97d85..8255f35 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
index 8bc9c079..54d7daf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js
index 7e4e27c..c0787e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
index 11e93a1c..9874fc6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js
index 59d89f7..62365ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
index 3a0b399..fbfa4ba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js
index efd76405..53063fd9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
index 28a2180..43cd1763c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js
index dfdafb1..df70792 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
index d9ad0be..9695522 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js
index 1dca0eb9..8f45ef58 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
index db71a88e..9334d69 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js
index dff64ba..47549bea5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
index 00e7791..7b53652 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js
index 80a65dc..562b966 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#0f0';
-try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
index ce03f7b..c9e9e4c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-1000, 1000, -1000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-1000, 1000, -1000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js
index 48cf6a7..51b81c5b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-1000, 1000, -1000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-1000, 1000, -1000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
index e4f9260..98df8d67 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-200%, 200%, -200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-200%, 200%, -200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js
index 70adec46..bfe9102f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-200%, 200%, -200%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-200%, 200%, -200%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
index 73bbc00d..70f5ed0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js
index 883328b..809d2093 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
index 1bdb70d..1f387998 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js
index ca5543a..c0ec5ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
index 880ad046..c2ac0b94 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js
index 41f8799..ac2692ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
index 9a84105d..2979d7d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js
index 3958993..997df7b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0, 255, 0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0, 255, 0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
index 6cda83e..67ba77f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0,255,0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0,255,0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js
index 229d6ae..1d54b1f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0,255,0)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0,255,0)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
index 6f7125d..8fe3be55 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0% ,100% ,0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0% ,100% ,0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js
index 4ba5c98..82437608 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgb(0% ,100% ,0%)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgb(0% ,100% ,0%)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
index 1cf20f7..af3acb9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, -2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, -2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js
index 9ba73e2..e3a5bf56 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, -2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, -2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
index c8b4844..32ee979 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js
index fd1c53a..612c40b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 2)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 2)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
index d3fd3df2..baa42cde 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 1';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 1';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js
index 6e51f09b..73e0b4f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0, 255, 0, 1';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0, 255, 0, 1';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
index 1ce69821..eaa83e18 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  .499  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  .499  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js
index 2805af6e..bb1a97fb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  .499  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  .499  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
index 979eff6..47bf3ddc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  0.499  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  0.499  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js
index 2ed1549..5629ca5c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  0.499  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  0.499  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
index 2c737e2..068befd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0%,100%,0%,0.499)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0%,100%,0%,0.499)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js
index 5852ea3..6d90415 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(0%,100%,0%,0.499)';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,127);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(0%,100%,0%,0.499)';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,127);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
index 701b5efc..0e58836 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js
index 51e6d774..cddedb7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
index 7280c10d..8da29ee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1.0  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1.0  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js
index 4dcbd72..126cbb92 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1.0  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  ,  1.0  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
index dfbb443..e67374c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  , +1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  , +1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js
index 060fad9..d8d1513 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba(  0  ,  255  ,  0  , +1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba(  0  ,  255  ,  0  , +1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
index 131396c8..777aacea 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba( -0  ,  255  , +0  ,  1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba( -0  ,  255  , +0  ,  1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js
index 43a8cf8..aa516a2d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'rgba( -0  ,  255  , +0  ,  1  )';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'rgba( -0  ,  255  , +0  ,  1  )';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
index ffcc525b..8dc6844 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'gray';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 128,128,128,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'gray';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 128,128,128,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js
index 86b4f81..e8660ca 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'gray';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 128,128,128,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'gray';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 128,128,128,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
index eafecd0..2833565 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'grey';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 128,128,128,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'grey';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 128,128,128,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js
index 3aa5305..3488200 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'grey';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 128,128,128,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'grey';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 128,128,128,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.html
index 65a84a78..6e12406 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.html
@@ -17,14 +17,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'ThreeDDarkShadow';
-assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'ThreeDDarkShadow';
+  assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js
index 8e21145..cf62855 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js
@@ -13,14 +13,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'ThreeDDarkShadow';
-assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'ThreeDDarkShadow';
+  assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
index 98da0c2..a595d70 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'transparent';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'transparent';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js
index a934b66c8..7f9a975 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'transparent';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'transparent';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
index cfebe8fc..0f2a7e0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
@@ -17,15 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'TrAnSpArEnT';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'TrAnSpArEnT';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js
index e577bf55..794ca92 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js
@@ -13,15 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-
-ctx.fillStyle = '#f00';
-ctx.fillStyle = 'TrAnSpArEnT';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,0,0,0);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = 'TrAnSpArEnT';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html
index 70eb6b1a2..3e56bd2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = { toString: function() { return "#008000"; } };
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-ctx.fillStyle = {};
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-ctx.fillStyle = 800000;
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-assert_throws_js(TypeError, function() { ctx.fillStyle = { toString: function() { throw new TypeError; } }; });
-ctx.strokeStyle = { toString: function() { return "#008000"; } };
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-ctx.strokeStyle = {};
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-ctx.strokeStyle = 800000;
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-assert_throws_js(TypeError, function() { ctx.strokeStyle = { toString: function() { throw new TypeError; } }; });
-t.done();
+  ctx.fillStyle = { toString: function() { return "#008000"; } };
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  ctx.fillStyle = {};
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  ctx.fillStyle = 800000;
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  assert_throws_js(TypeError, function() { ctx.fillStyle = { toString: function() { throw new TypeError; } }; });
+  ctx.strokeStyle = { toString: function() { return "#008000"; } };
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  ctx.strokeStyle = {};
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  ctx.strokeStyle = 800000;
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  assert_throws_js(TypeError, function() { ctx.strokeStyle = { toString: function() { throw new TypeError; } }; });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.worker.js
index 68ae0a5..3ae9309 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.toStringFunctionCallback.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = { toString: function() { return "#008000"; } };
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-ctx.fillStyle = {};
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-ctx.fillStyle = 800000;
-_assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
-assert_throws_js(TypeError, function() { ctx.fillStyle = { toString: function() { throw new TypeError; } }; });
-ctx.strokeStyle = { toString: function() { return "#008000"; } };
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-ctx.strokeStyle = {};
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-ctx.strokeStyle = 800000;
-_assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
-assert_throws_js(TypeError, function() { ctx.strokeStyle = { toString: function() { throw new TypeError; } }; });
-t.done();
-
+  ctx.fillStyle = { toString: function() { return "#008000"; } };
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  ctx.fillStyle = {};
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  ctx.fillStyle = 800000;
+  _assertSame(ctx.fillStyle, "#008000", "ctx.fillStyle", "\"#008000\"");
+  assert_throws_js(TypeError, function() { ctx.fillStyle = { toString: function() { throw new TypeError; } }; });
+  ctx.strokeStyle = { toString: function() { return "#008000"; } };
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  ctx.strokeStyle = {};
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  ctx.strokeStyle = 800000;
+  _assertSame(ctx.strokeStyle, "#008000", "ctx.strokeStyle", "\"#008000\"");
+  assert_throws_js(TypeError, function() { ctx.strokeStyle = { toString: function() { throw new TypeError; } }; });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html
index 3d1f21e..5ccb19e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.html
@@ -17,29 +17,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(-Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(NaN, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, -Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, NaN, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, NaN); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(-Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(NaN, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, -Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, NaN, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, Infinity); });
 
-const g = ctx.createConicGradient(0, 0, 25);
-assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#f00'); });
-assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#f00'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, -Infinity); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, NaN); });
-t.done();
+  const g = ctx.createConicGradient(0, 0, 25);
+  assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#f00'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#f00'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, -Infinity); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, NaN); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.worker.js
index b6bd62c..19b603e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.invalid.inputs.worker.js
@@ -13,29 +13,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(-Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(NaN, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, -Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, NaN, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, NaN); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(-Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(NaN, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, -Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, NaN, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, 0, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createConicGradient(0, Infinity, Infinity); });
 
-const g = ctx.createConicGradient(0, 0, 25);
-assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#f00'); });
-assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#f00'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, -Infinity); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, NaN); });
-t.done();
-
+  const g = ctx.createConicGradient(0, 0, 25);
+  assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#f00'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#f00'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, -Infinity); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, NaN); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html
index dde5440..848f149 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-const g = ctx.createConicGradient(-Math.PI/2, 50, 25);
-// It's red in the upper right region and green on the lower left region
-g.addColorStop(0, "#f00");
-g.addColorStop(0.25, "#0f0");
-g.addColorStop(0.50, "#0f0");
-g.addColorStop(0.75, "#f00");
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
-_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
-t.done();
+  const g = ctx.createConicGradient(-Math.PI/2, 50, 25);
+  // It's red in the upper right region and green on the lower left region
+  g.addColorStop(0, "#f00");
+  g.addColorStop(0.25, "#0f0");
+  g.addColorStop(0.50, "#0f0");
+  g.addColorStop(0.75, "#f00");
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
+  _assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.worker.js
index 68589cfa..1f9735e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-const g = ctx.createConicGradient(-Math.PI/2, 50, 25);
-// It's red in the upper right region and green on the lower left region
-g.addColorStop(0, "#f00");
-g.addColorStop(0.25, "#0f0");
-g.addColorStop(0.50, "#0f0");
-g.addColorStop(0.75, "#f00");
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
-_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
-t.done();
-
+  const g = ctx.createConicGradient(-Math.PI/2, 50, 25);
+  // It's red in the upper right region and green on the lower left region
+  g.addColorStop(0, "#f00");
+  g.addColorStop(0.25, "#0f0");
+  g.addColorStop(0.50, "#0f0");
+  g.addColorStop(0.75, "#f00");
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
+  _assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html
index 42d5a87..06b59390 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-const g = ctx.createConicGradient(3*Math.PI/2, 50, 25);
-// It's red in the upper right region and green on the lower left region
-g.addColorStop(0, "#f00");
-g.addColorStop(0.25, "#0f0");
-g.addColorStop(0.50, "#0f0");
-g.addColorStop(0.75, "#f00");
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
-_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
-t.done();
+  const g = ctx.createConicGradient(3*Math.PI/2, 50, 25);
+  // It's red in the upper right region and green on the lower left region
+  g.addColorStop(0, "#f00");
+  g.addColorStop(0.25, "#0f0");
+  g.addColorStop(0.50, "#0f0");
+  g.addColorStop(0.75, "#f00");
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
+  _assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.worker.js
index cece603d..45bbf403 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-const g = ctx.createConicGradient(3*Math.PI/2, 50, 25);
-// It's red in the upper right region and green on the lower left region
-g.addColorStop(0, "#f00");
-g.addColorStop(0.25, "#0f0");
-g.addColorStop(0.50, "#0f0");
-g.addColorStop(0.75, "#f00");
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
-_assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
-t.done();
-
+  const g = ctx.createConicGradient(3*Math.PI/2, 50, 25);
+  // It's red in the upper right region and green on the lower left region
+  g.addColorStop(0, "#f00");
+  g.addColorStop(0.25, "#0f0");
+  g.addColorStop(0.50, "#0f0");
+  g.addColorStop(0.75, "#f00");
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,15, 255,0,0,255, 3);
+  _assertPixelApprox(canvas, 75,40, 0,255,0,255, 3);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.html
index 93229d9..bad1ff4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(0, 0, 0, 50);
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(0, 0, 0, 50);
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.worker.js
index 207a1b0..225de25 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(0, 0, 0, 50);
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(0, 0, 0, 50);
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
index 52c11fc..525cb79 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#ff0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'rgba(0,0,255, 0)');
-g.addColorStop(1, 'rgba(0,0,255, 1)');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
-_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
-t.done();
+  ctx.fillStyle = '#ff0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'rgba(0,0,255, 0)');
+  g.addColorStop(1, 'rgba(0,0,255, 1)');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
+  _assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js
index d9f08a9..5c2f7e0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#ff0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'rgba(0,0,255, 0)');
-g.addColorStop(1, 'rgba(0,0,255, 1)');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
-_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
-t.done();
-
+  ctx.fillStyle = '#ff0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'rgba(0,0,255, 0)');
+  g.addColorStop(1, 'rgba(0,0,255, 1)');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
+  _assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.html
index 8f327817..c742eff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
-_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
+  _assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js
index fcf1f84f..6d273b7b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.color.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
-_assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 191,191,63,255, 3);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 3);
+  _assertPixelApprox(canvas, 75,25, 63,63,191,255, 3);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html
index 0e7d3b55..00575c3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'rgba(255,255,0, 0)');
-g.addColorStop(1, 'rgba(0,0,255, 1)');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 190,190,65,65, 3);
-_assertPixelApprox(canvas, 50,25, 126,126,128,128, 3);
-_assertPixelApprox(canvas, 75,25, 62,62,192,192, 3);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'rgba(255,255,0, 0)');
+  g.addColorStop(1, 'rgba(0,0,255, 1)');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 190,190,65,65, 3);
+  _assertPixelApprox(canvas, 50,25, 126,126,128,128, 3);
+  _assertPixelApprox(canvas, 75,25, 62,62,192,192, 3);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js
index cc1cc9f219..1462cb59 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, 'rgba(255,255,0, 0)');
-g.addColorStop(1, 'rgba(0,0,255, 1)');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 25,25, 190,190,65,65, 3);
-_assertPixelApprox(canvas, 50,25, 126,126,128,128, 3);
-_assertPixelApprox(canvas, 75,25, 62,62,192,192, 3);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, 'rgba(255,255,0, 0)');
+  g.addColorStop(1, 'rgba(0,0,255, 1)');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 25,25, 190,190,65,65, 3);
+  _assertPixelApprox(canvas, 50,25, 126,126,128,128, 3);
+  _assertPixelApprox(canvas, 75,25, 62,62,192,192, 3);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
index 724ae5c..3f2594f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 200;
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#ff0');
-g.addColorStop(0.5, '#0ff');
-g.addColorStop(1, '#f0f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 200, 50);
-_assertPixelApprox(canvas, 50,25, 127,255,127,255, 3);
-_assertPixelApprox(canvas, 100,25, 0,255,255,255, 3);
-_assertPixelApprox(canvas, 150,25, 127,127,255,255, 3);
-t.done();
+  canvas.width = 200;
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(0.5, '#0ff');
+  g.addColorStop(1, '#f0f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 200, 50);
+  _assertPixelApprox(canvas, 50,25, 127,255,127,255, 3);
+  _assertPixelApprox(canvas, 100,25, 0,255,255,255, 3);
+  _assertPixelApprox(canvas, 150,25, 127,127,255,255, 3);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js
index ff3687c..ebfcddc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 200;
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#ff0');
-g.addColorStop(0.5, '#0ff');
-g.addColorStop(1, '#f0f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 200, 50);
-_assertPixelApprox(canvas, 50,25, 127,255,127,255, 3);
-_assertPixelApprox(canvas, 100,25, 0,255,255,255, 3);
-_assertPixelApprox(canvas, 150,25, 127,127,255,255, 3);
-t.done();
-
+  canvas.width = 200;
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(0.5, '#0ff');
+  g.addColorStop(1, '#f0f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 200, 50);
+  _assertPixelApprox(canvas, 50,25, 127,255,127,255, 3);
+  _assertPixelApprox(canvas, 100,25, 0,255,255,255, 3);
+  _assertPixelApprox(canvas, 150,25, 127,127,255,255, 3);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
index 0ef97af..0dda6c0c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(25, 0, 75, 0);
-g.addColorStop(0.4, '#0f0');
-g.addColorStop(0.6, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 20,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 80,25, 0,255,0,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(25, 0, 75, 0);
+  g.addColorStop(0.4, '#0f0');
+  g.addColorStop(0.6, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 20,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 80,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js
index 60d10a5..66fc180 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(25, 0, 75, 0);
-g.addColorStop(0.4, '#0f0');
-g.addColorStop(0.6, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 20,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 80,25, 0,255,0,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(25, 0, 75, 0);
+  g.addColorStop(0.4, '#0f0');
+  g.addColorStop(0.6, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 20,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 80,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
index 77eb328e..0139da17 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
@@ -17,36 +17,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 200;
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0, '#ff0');
-g.addColorStop(0.25, '#00f');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#ff0');
-g.addColorStop(0.5, '#00f');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.75, '#00f');
-g.addColorStop(0.75, '#f00');
-g.addColorStop(0.75, '#ff0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.5, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 200, 50);
-_assertPixelApprox(canvas, 49,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 51,25, 255,255,0,255, 16);
-_assertPixelApprox(canvas, 99,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 101,25, 255,255,0,255, 16);
-_assertPixelApprox(canvas, 149,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 151,25, 255,255,0,255, 16);
-t.done();
+  canvas.width = 200;
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(0.25, '#00f');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#ff0');
+  g.addColorStop(0.5, '#00f');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.75, '#00f');
+  g.addColorStop(0.75, '#f00');
+  g.addColorStop(0.75, '#ff0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.5, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 200, 50);
+  _assertPixelApprox(canvas, 49,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 51,25, 255,255,0,255, 16);
+  _assertPixelApprox(canvas, 99,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 101,25, 255,255,0,255, 16);
+  _assertPixelApprox(canvas, 149,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 151,25, 255,255,0,255, 16);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js
index e11c85f..d404deab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js
@@ -13,36 +13,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 200;
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0, '#ff0');
-g.addColorStop(0.25, '#00f');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.25, '#ff0');
-g.addColorStop(0.5, '#00f');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.75, '#00f');
-g.addColorStop(0.75, '#f00');
-g.addColorStop(0.75, '#ff0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.5, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 200, 50);
-_assertPixelApprox(canvas, 49,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 51,25, 255,255,0,255, 16);
-_assertPixelApprox(canvas, 99,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 101,25, 255,255,0,255, 16);
-_assertPixelApprox(canvas, 149,25, 0,0,255,255, 16);
-_assertPixelApprox(canvas, 151,25, 255,255,0,255, 16);
-t.done();
-
+  canvas.width = 200;
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(0.25, '#00f');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.25, '#ff0');
+  g.addColorStop(0.5, '#00f');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.75, '#00f');
+  g.addColorStop(0.75, '#f00');
+  g.addColorStop(0.75, '#ff0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.5, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 200, 50);
+  _assertPixelApprox(canvas, 49,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 51,25, 255,255,0,255, 16);
+  _assertPixelApprox(canvas, 99,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 101,25, 255,255,0,255, 16);
+  _assertPixelApprox(canvas, 149,25, 0,0,255,255, 16);
+  _assertPixelApprox(canvas, 151,25, 255,255,0,255, 16);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
index 662913b..c26c8ecb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ];
-for (var p = 0; p < ps.length; ++p)
-{
-        g.addColorStop(ps[p], '#0f0');
-        for (var i = 0; i < 15; ++i)
-                g.addColorStop(ps[p], '#f00');
-        g.addColorStop(ps[p], '#0f0');
-}
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 30,25, 0,255,0,255);
-_assertPixel(canvas, 40,25, 0,255,0,255);
-_assertPixel(canvas, 60,25, 0,255,0,255);
-_assertPixel(canvas, 80,25, 0,255,0,255);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ];
+  for (var p = 0; p < ps.length; ++p)
+  {
+          g.addColorStop(ps[p], '#0f0');
+          for (var i = 0; i < 15; ++i)
+                  g.addColorStop(ps[p], '#f00');
+          g.addColorStop(ps[p], '#0f0');
+  }
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 30,25, 0,255,0,255);
+  _assertPixel(canvas, 40,25, 0,255,0,255);
+  _assertPixel(canvas, 60,25, 0,255,0,255);
+  _assertPixel(canvas, 80,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js
index a6329af9..3938081c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ];
-for (var p = 0; p < ps.length; ++p)
-{
-        g.addColorStop(ps[p], '#0f0');
-        for (var i = 0; i < 15; ++i)
-                g.addColorStop(ps[p], '#f00');
-        g.addColorStop(ps[p], '#0f0');
-}
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 30,25, 0,255,0,255);
-_assertPixel(canvas, 40,25, 0,255,0,255);
-_assertPixel(canvas, 60,25, 0,255,0,255);
-_assertPixel(canvas, 80,25, 0,255,0,255);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ];
+  for (var p = 0; p < ps.length; ++p)
+  {
+          g.addColorStop(ps[p], '#0f0');
+          for (var i = 0; i < 15; ++i)
+                  g.addColorStop(ps[p], '#f00');
+          g.addColorStop(ps[p], '#0f0');
+  }
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 30,25, 0,255,0,255);
+  _assertPixel(canvas, 40,25, 0,255,0,255);
+  _assertPixel(canvas, 60,25, 0,255,0,255);
+  _assertPixel(canvas, 80,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
index aa488d9..dd369ae 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js
index 8cc4a88..387aab0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
index 15c4c7c..dff5708 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 0, 50);
-g.addColorStop(0, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,12, 191,191,63,255, 10);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 5);
-_assertPixelApprox(canvas, 50,37, 63,63,191,255, 10);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 0, 50);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,12, 191,191,63,255, 10);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 5);
+  _assertPixelApprox(canvas, 50,37, 63,63,191,255, 10);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js
index a25692cf..61cf9b6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 0, 50);
-g.addColorStop(0, '#ff0');
-g.addColorStop(1, '#00f');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,12, 191,191,63,255, 10);
-_assertPixelApprox(canvas, 50,25, 127,127,127,255, 5);
-_assertPixelApprox(canvas, 50,37, 63,63,191,255, 10);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 0, 50);
+  g.addColorStop(0, '#ff0');
+  g.addColorStop(1, '#00f');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,12, 191,191,63,255, 10);
+  _assertPixelApprox(canvas, 50,25, 127,127,127,255, 5);
+  _assertPixelApprox(canvas, 50,37, 63,63,191,255, 10);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
index b679d5b..71d5cb85 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
@@ -17,19 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.rect(0, 0, 100, 50);
-ctx.fill();
-_assertPixel(canvas, 40,20, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.rect(0, 0, 100, 50);
+  ctx.fill();
+  _assertPixel(canvas, 40,20, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js
index 71df967..3b86cec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js
@@ -13,19 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.rect(0, 0, 100, 50);
-ctx.fill();
-_assertPixel(canvas, 40,20, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.rect(0, 0, 100, 50);
+  ctx.fill();
+  _assertPixel(canvas, 40,20, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
index 9576f2a..1b3851c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 40,20, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 40,20, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js
index b6dfbf0..f6ab1d9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 40,20, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 40,20, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
index 81a5e4e..3b66f6c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.rect(20, 20, 60, 10);
-ctx.stroke();
-_assertPixel(canvas, 19,19, 0,255,0,255);
-_assertPixel(canvas, 20,19, 0,255,0,255);
-_assertPixel(canvas, 21,19, 0,255,0,255);
-_assertPixel(canvas, 19,20, 0,255,0,255);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-_assertPixel(canvas, 21,20, 0,255,0,255);
-_assertPixel(canvas, 19,21, 0,255,0,255);
-_assertPixel(canvas, 20,21, 0,255,0,255);
-_assertPixel(canvas, 21,21, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.rect(20, 20, 60, 10);
+  ctx.stroke();
+  _assertPixel(canvas, 19,19, 0,255,0,255);
+  _assertPixel(canvas, 20,19, 0,255,0,255);
+  _assertPixel(canvas, 21,19, 0,255,0,255);
+  _assertPixel(canvas, 19,20, 0,255,0,255);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  _assertPixel(canvas, 21,20, 0,255,0,255);
+  _assertPixel(canvas, 19,21, 0,255,0,255);
+  _assertPixel(canvas, 20,21, 0,255,0,255);
+  _assertPixel(canvas, 21,21, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js
index c8744645..7e21501 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.rect(20, 20, 60, 10);
-ctx.stroke();
-_assertPixel(canvas, 19,19, 0,255,0,255);
-_assertPixel(canvas, 20,19, 0,255,0,255);
-_assertPixel(canvas, 21,19, 0,255,0,255);
-_assertPixel(canvas, 19,20, 0,255,0,255);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-_assertPixel(canvas, 21,20, 0,255,0,255);
-_assertPixel(canvas, 19,21, 0,255,0,255);
-_assertPixel(canvas, 20,21, 0,255,0,255);
-_assertPixel(canvas, 21,21, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.rect(20, 20, 60, 10);
+  ctx.stroke();
+  _assertPixel(canvas, 19,19, 0,255,0,255);
+  _assertPixel(canvas, 20,19, 0,255,0,255);
+  _assertPixel(canvas, 21,19, 0,255,0,255);
+  _assertPixel(canvas, 19,20, 0,255,0,255);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  _assertPixel(canvas, 21,20, 0,255,0,255);
+  _assertPixel(canvas, 19,21, 0,255,0,255);
+  _assertPixel(canvas, 20,21, 0,255,0,255);
+  _assertPixel(canvas, 21,21, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
index 91cedc7..e7fd7e78 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.strokeRect(20, 20, 60, 10);
-_assertPixel(canvas, 19,19, 0,255,0,255);
-_assertPixel(canvas, 20,19, 0,255,0,255);
-_assertPixel(canvas, 21,19, 0,255,0,255);
-_assertPixel(canvas, 19,20, 0,255,0,255);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-_assertPixel(canvas, 21,20, 0,255,0,255);
-_assertPixel(canvas, 19,21, 0,255,0,255);
-_assertPixel(canvas, 20,21, 0,255,0,255);
-_assertPixel(canvas, 21,21, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.strokeRect(20, 20, 60, 10);
+  _assertPixel(canvas, 19,19, 0,255,0,255);
+  _assertPixel(canvas, 20,19, 0,255,0,255);
+  _assertPixel(canvas, 21,19, 0,255,0,255);
+  _assertPixel(canvas, 19,20, 0,255,0,255);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  _assertPixel(canvas, 21,20, 0,255,0,255);
+  _assertPixel(canvas, 19,21, 0,255,0,255);
+  _assertPixel(canvas, 20,21, 0,255,0,255);
+  _assertPixel(canvas, 21,21, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js
index 0949fc8..d7344fb4e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.strokeStyle = g;
-ctx.strokeRect(20, 20, 60, 10);
-_assertPixel(canvas, 19,19, 0,255,0,255);
-_assertPixel(canvas, 20,19, 0,255,0,255);
-_assertPixel(canvas, 21,19, 0,255,0,255);
-_assertPixel(canvas, 19,20, 0,255,0,255);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-_assertPixel(canvas, 21,20, 0,255,0,255);
-_assertPixel(canvas, 19,21, 0,255,0,255);
-_assertPixel(canvas, 20,21, 0,255,0,255);
-_assertPixel(canvas, 21,21, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction)
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.strokeStyle = g;
+  ctx.strokeRect(20, 20, 60, 10);
+  _assertPixel(canvas, 19,19, 0,255,0,255);
+  _assertPixel(canvas, 20,19, 0,255,0,255);
+  _assertPixel(canvas, 21,19, 0,255,0,255);
+  _assertPixel(canvas, 19,20, 0,255,0,255);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  _assertPixel(canvas, 21,20, 0,255,0,255);
+  _assertPixel(canvas, 19,21, 0,255,0,255);
+  _assertPixel(canvas, 20,21, 0,255,0,255);
+  _assertPixel(canvas, 21,21, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
index f3c4209b..bc10ece 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(NaN, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, -Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, NaN, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, -Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, NaN, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, NaN); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); });
-t.done();
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(NaN, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, -Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, NaN, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, -Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, NaN, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js
index 9fefcc3..87f68918 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(NaN, 0, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, -Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, NaN, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, -Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, NaN, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, NaN); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); });
-t.done();
-
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(NaN, 0, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, -Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, NaN, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, -Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, NaN, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, 1, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
index 5e791079..69fc52ce 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
@@ -17,21 +17,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-50, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-50, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js
index 62a96e2..79cdc96 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js
@@ -13,21 +13,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-50, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-50, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
index 86fb5073..5cf27f1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.translate(100, 0);
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-150, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.translate(100, 0);
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-150, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js
index dace251..a2b532d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.translate(100, 0);
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-150, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.translate(100, 0);
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-150, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
index ccbc3ab2..074722a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.translate(-50, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.translate(-50, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js
index 8f5a711..77df949 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.25, '#0f0');
-g.addColorStop(0.75, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.translate(-50, 0);
-ctx.fillRect(50, 0, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.25, '#0f0');
+  g.addColorStop(0.75, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.translate(-50, 0);
+  ctx.fillRect(50, 0, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.html
index a091c32..d923a2f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g1 = ctx.createLinearGradient(0, 0, 100, 0);
-var g2 = ctx.createLinearGradient(0, 0, 100, 0);
-_assertDifferent(g1, g2, "g1", "g2");
-ctx.fillStyle = g1;
-_assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1");
-t.done();
+  var g1 = ctx.createLinearGradient(0, 0, 100, 0);
+  var g2 = ctx.createLinearGradient(0, 0, 100, 0);
+  _assertDifferent(g1, g2, "g1", "g2");
+  ctx.fillStyle = g1;
+  _assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.worker.js
index 6c69e1a..f6d45d2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.compare.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g1 = ctx.createLinearGradient(0, 0, 100, 0);
-var g2 = ctx.createLinearGradient(0, 0, 100, 0);
-_assertDifferent(g1, g2, "g1", "g2");
-ctx.fillStyle = g1;
-_assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1");
-t.done();
-
+  var g1 = ctx.createLinearGradient(0, 0, 100, 0);
+  var g2 = ctx.createLinearGradient(0, 0, 100, 0);
+  _assertDifferent(g1, g2, "g1", "g2");
+  ctx.fillStyle = g1;
+  _assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
index 8d54f95..7ea9d84 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
@@ -17,19 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var g = offscreenCanvas2.getContext('2d').createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var g = offscreenCanvas2.getContext('2d').createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js
index fa8cee4..f877d59 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js
@@ -13,19 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var g = offscreenCanvas2.getContext('2d').createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var g = offscreenCanvas2.getContext('2d').createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html
index e812278..51160c5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js
index 278df5a..40e84ba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolor.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
-assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, null); });
+  assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, undefined); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
index bba4050..b9f1104 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(Infinity, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#000'); });
-t.done();
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(Infinity, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#000'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js
index f71c840..80be642 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(Infinity, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#000'); });
-assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#000'); });
-t.done();
-
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(Infinity, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(-Infinity, '#000'); });
+  assert_throws_js(TypeError, function() { g.addColorStop(NaN, '#000'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html
index 175c3a2..00c6004 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.html
@@ -17,19 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(-100, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-g.addColorStop(0.1, '#0f0');
-g.addColorStop(0.9, '#0f0');
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
+  var g = ctx.createLinearGradient(-100, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  g.addColorStop(0.1, '#0f0');
+  g.addColorStop(0.9, '#0f0');
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js
index 76721140..db79ebf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.update.worker.js
@@ -13,19 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createLinearGradient(-100, 0, 200, 0);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-g.addColorStop(0.1, '#0f0');
-g.addColorStop(0.9, '#0f0');
-ctx.fillRect(0, 0, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
-
+  var g = ctx.createLinearGradient(-100, 0, 200, 0);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  g.addColorStop(0.1, '#0f0');
+  g.addColorStop(0.9, '#0f0');
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
index 537f960d..9a07ec4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js
index 99711c7..806a83f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
index 360f1ab7..1ab27b46 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js
index 6af4825..2bb0860 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
index 3f369038..87cac451 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js
index 2eca2d5..a9c859e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
index 70074093..649b83c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js
index 25ff9b8..8223f52 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
index 12f14ce0..6ad51c1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js
index 6053cb4..a1eb55f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
index 242aaa0..7de944a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var tol = 1; // tolerance to avoid antialiasing artifacts
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.beginPath();
-ctx.moveTo(30+tol, 40);
-ctx.lineTo(110, -20+tol);
-ctx.lineTo(110, 100-tol);
-ctx.fill();
-var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  var tol = 1; // tolerance to avoid antialiasing artifacts
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.beginPath();
+  ctx.moveTo(30+tol, 40);
+  ctx.lineTo(110, -20+tol);
+  ctx.lineTo(110, 100-tol);
+  ctx.fill();
+  var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js
index 15e7a6f..0d211a0c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var tol = 1; // tolerance to avoid antialiasing artifacts
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.beginPath();
-ctx.moveTo(30+tol, 40);
-ctx.lineTo(110, -20+tol);
-ctx.lineTo(110, 100-tol);
-ctx.fill();
-var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  var tol = 1; // tolerance to avoid antialiasing artifacts
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.beginPath();
+  ctx.moveTo(30+tol, 40);
+  ctx.lineTo(110, -20+tol);
+  ctx.lineTo(110, 100-tol);
+  ctx.fill();
+  var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
index d51a132..a748546 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var tol = 1; // tolerance to avoid antialiasing artifacts
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.beginPath();
-ctx.moveTo(30-tol, 40);
-ctx.lineTo(110, -20-tol);
-ctx.lineTo(110, 100+tol);
-ctx.fill();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  var tol = 1; // tolerance to avoid antialiasing artifacts
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.beginPath();
+  ctx.moveTo(30-tol, 40);
+  ctx.lineTo(110, -20-tol);
+  ctx.lineTo(110, 100+tol);
+  ctx.fill();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js
index 793d251..2f56159 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var tol = 1; // tolerance to avoid antialiasing artifacts
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.beginPath();
-ctx.moveTo(30-tol, 40);
-ctx.lineTo(110, -20-tol);
-ctx.lineTo(110, 100+tol);
-ctx.fill();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  var tol = 1; // tolerance to avoid antialiasing artifacts
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.beginPath();
+  ctx.moveTo(30-tol, 40);
+  ctx.lineTo(110, -20-tol);
+  ctx.lineTo(110, 100+tol);
+  ctx.fill();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
index 9759eb3..802006b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js
index 2ee6de3..731ee8f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html
index 465ee97..3786e18 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js
index 74567335..d046809 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html
index 7c6fd31..db269a9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js
index 6d73c093..bc48654 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html
index fbad8b5..23de3b00 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js
index aa6ecba..ffc1040 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html
index 54794b1..bbb2ecbc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.993, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.993, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js
index b6d58b6..792d9e78 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.993, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.993, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.html
index 1fb6af522..b6dcaf1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.html
@@ -17,13 +17,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); });
-t.done();
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js
index e0d2c7c..72ad3f8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js
@@ -13,13 +13,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); });
-assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); });
-t.done();
-
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); });
+  assert_throws_dom("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
index 75ab5740..8ba04769 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
@@ -17,85 +17,85 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); });
-t.done();
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js
index f0994694..dd25e607 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js
@@ -13,85 +13,84 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); });
-assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); });
-t.done();
-
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); });
+  assert_throws_js(TypeError, function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html
index 44b2aa4..6c65f23 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js
index e1d3cdd..d7beb71 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#0f0');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#0f0');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html
index e9e7ce497..8f4c48e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js
index a3f0235e..6c753e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html
index b66480a..5cfd308 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.001, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.001, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js
index 7b90c87..70593ce 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.001, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.001, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html
index c042b03..983071ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js
index 7465345..21bbce1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html
index 5da1d59..bd23924 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.01, '#0f0');
-g.addColorStop(0.99, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.01, '#0f0');
+  g.addColorStop(0.99, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js
index 91dfcb3..75abd38d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
-g.addColorStop(0, '#f00');
-g.addColorStop(0.01, '#0f0');
-g.addColorStop(0.99, '#0f0');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(0.01, '#0f0');
+  g.addColorStop(0.99, '#0f0');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html
index 804589f..bdaed6f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js
index 11e17fbb..b2f3b0b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50);
-g.addColorStop(0, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50);
+  g.addColorStop(0, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
index c54044c..517c9e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js
index e2159d26..198dab1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
index 145c292..f7f4120a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.translate(100, 0);
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.translate(100, 0);
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js
index 511b7f3..27793b90 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.translate(100, 0);
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.translate(-50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.translate(100, 0);
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.translate(-50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
index 01d14cf..e0ac17f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.translate(50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.translate(50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js
index b7bf68a..1b74d8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
-g.addColorStop(0, '#0f0');
-g.addColorStop(0.5, '#0f0');
-g.addColorStop(0.51, '#f00');
-g.addColorStop(1, '#f00');
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-ctx.translate(50, 25);
-ctx.scale(10, 10);
-ctx.fillRect(-5, -2.5, 10, 5);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(0.5, '#0f0');
+  g.addColorStop(0.51, '#f00');
+  g.addColorStop(1, '#f00');
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.translate(50, 25);
+  ctx.scale(10, 10);
+  ctx.fillRect(-5, -2.5, 10, 5);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html
index 80bb9466..6f66f50 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js
index a2608066..6f6b882 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 50,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 50,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 50,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 50,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html
index 965daccd..4ffbc6d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.html
@@ -17,31 +17,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js
index 725df51..b9a79d7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.image.worker.js
@@ -13,31 +13,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
index 50cd38e..9fa124277 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
@@ -17,21 +17,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js
index 8f33ec9d..11c30765 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js
@@ -13,21 +13,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
index 5c395ab..c7f6188 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 0;
-canvas.height = 10;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 10, "canvas.height", "10");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-canvas.width = 10;
-canvas.height = 0;
-_assertSame(canvas.width, 10, "canvas.width", "10");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-t.done();
+  canvas.width = 0;
+  canvas.height = 10;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 10, "canvas.height", "10");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  canvas.width = 10;
+  canvas.height = 0;
+  _assertSame(canvas.width, 10, "canvas.width", "10");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js
index b02e3cc..caeff7c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 0;
-canvas.height = 10;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 10, "canvas.height", "10");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-canvas.width = 10;
-canvas.height = 0;
-_assertSame(canvas.width, 10, "canvas.width", "10");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
-t.done();
-
+  canvas.width = 0;
+  canvas.height = 10;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 10, "canvas.height", "10");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  canvas.width = 10;
+  canvas.height = 0;
+  _assertSame(canvas.width, 10, "canvas.width", "10");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(canvas, 'repeat'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html
index c6e0b36..b040e02 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.html
@@ -17,29 +17,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-        var pattern = offscreenCanvas2.getContext('2d').createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+          var pattern = offscreenCanvas2.getContext('2d').createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js
index 1a1d045..e7a20744 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js
@@ -13,29 +13,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-        var pattern = offscreenCanvas2.getContext('2d').createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+          var pattern = offscreenCanvas2.getContext('2d').createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.html
index e3ad031..4297814b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createPattern(null, 'repeat'); });
-t.done();
+  assert_throws_js(TypeError, function() { ctx.createPattern(null, 'repeat'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.worker.js
index 63dcb8f9..c7d99696 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.null.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createPattern(null, 'repeat'); });
-t.done();
-
+  assert_throws_js(TypeError, function() { ctx.createPattern(null, 'repeat'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.html
index ac202ee..469f223 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createPattern('../images/red.png', 'repeat'); });
-t.done();
+  assert_throws_js(TypeError, function() { ctx.createPattern('../images/red.png', 'repeat'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.worker.js
index c07e7d51..f8525e4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.string.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createPattern('../images/red.png', 'repeat'); });
-t.done();
-
+  assert_throws_js(TypeError, function() { ctx.createPattern('../images/red.png', 'repeat'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.html
index 0593d415..475d8dd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createPattern(undefined, 'repeat'); });
-t.done();
+  assert_throws_js(TypeError, function() { ctx.createPattern(undefined, 'repeat'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js
index 1e94f39..dbfdbe9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { ctx.createPattern(undefined, 'repeat'); });
-t.done();
-
+  assert_throws_js(TypeError, function() { ctx.createPattern(undefined, 'repeat'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
index 4c27f263..11586f5a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js
index c83755c..3dde0ef9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
index 08a6cd8..568140a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js
index a49dd10..fd70a2fc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 0, 100, 50);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 0, 100, 50);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
index f5d9f5a..7ec80af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
@@ -17,31 +17,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js
index 82a49c3..178be23 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js
@@ -13,31 +13,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
index 87158be..d6ebd242 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
@@ -17,34 +17,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 0);
-        ctx.fillRect(-50, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 0);
+          ctx.fillRect(-50, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js
index 731df50c..8596a46 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js
@@ -13,34 +13,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 0);
-        ctx.fillRect(-50, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 0);
+          ctx.fillRect(-50, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
index a600e6e..97205f54 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
@@ -17,34 +17,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 50, 50);
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(50, 0, 50, 50);
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 0);
-        ctx.fillRect(-50, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 50, 50);
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(50, 0, 50, 50);
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 0);
+          ctx.fillRect(-50, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js
index bd9c115..5c69536d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js
@@ -13,34 +13,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 50, 50);
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(50, 0, 50, 50);
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 0);
-        ctx.fillRect(-50, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 50, 50);
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(50, 0, 50, 50);
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 0);
+          ctx.fillRect(-50, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
index c569d87..28104ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
@@ -17,34 +17,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 25);
-        ctx.fillRect(-50, -25, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 50, 25);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 25);
+          ctx.fillRect(-50, -25, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 50, 25);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js
index cf88ebab..994bcc8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js
@@ -13,34 +13,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 25);
-        ctx.fillRect(-50, -25, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 50, 25);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 25);
+          ctx.fillRect(-50, -25, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 50, 25);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
index 4242375..5036f8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
@@ -17,36 +17,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-        ctx.fillRect(-100, 0, 100, 50);
-        ctx.fillRect(0, 50, 100, 50);
-        ctx.fillRect(100, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+          ctx.fillRect(-100, 0, 100, 50);
+          ctx.fillRect(0, 50, 100, 50);
+          ctx.fillRect(100, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js
index 85a6e43b..f6ccb83 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js
@@ -13,36 +13,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-        ctx.fillRect(-100, 0, 100, 50);
-        ctx.fillRect(0, 50, 100, 50);
-        ctx.fillRect(100, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+          ctx.fillRect(-100, 0, 100, 50);
+          ctx.fillRect(0, 50, 100, 50);
+          ctx.fillRect(100, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
index ccad92e5..f730557 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 25);
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 25, 100, 25);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 25);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 25);
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 25, 100, 25);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 25);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js
index 38fa35f..7896c70 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 25);
-ctx2.fillStyle = '#0f0';
-ctx2.fillRect(0, 25, 100, 25);
-var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
-ctx.fillStyle = pattern;
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 25);
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 98,1, 0,255,0,255);
-_assertPixel(canvas, 1,48, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 25);
+  ctx2.fillStyle = '#0f0';
+  ctx2.fillRect(0, 25, 100, 25);
+  var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat');
+  ctx.fillStyle = pattern;
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 25);
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 98,1, 0,255,0,255);
+  _assertPixel(canvas, 1,48, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
index 377cc58..05b278a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
@@ -17,36 +17,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/rrgg-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.save();
-        ctx.translate(0, -103);
-        ctx.fillRect(0, 103, 100, 50);
-        ctx.restore();
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 25);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/rrgg-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.save();
+          ctx.translate(0, -103);
+          ctx.fillRect(0, 103, 100, 50);
+          ctx.restore();
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 25);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js
index fccfe704..825e12a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js
@@ -13,36 +13,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/rrgg-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.save();
-        ctx.translate(0, -103);
-        ctx.fillRect(0, 103, 100, 50);
-        ctx.restore();
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 25);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/rrgg-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.save();
+          ctx.translate(0, -103);
+          ctx.fillRect(0, 103, 100, 50);
+          ctx.restore();
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 25);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
index b5613c37..15b7ff2c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
@@ -17,31 +17,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js
index 1f09d29..6bf7392 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js
@@ -13,31 +13,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
index a4b2bbd..22583897 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
@@ -17,32 +17,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/rgrg-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(-128, -78);
-        ctx.fillRect(128, 78, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/rgrg-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(-128, -78);
+          ctx.fillRect(128, 78, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js
index ea064ea..32d1a27 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js
@@ -13,32 +13,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/rgrg-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(-128, -78);
-        ctx.fillRect(128, 78, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/rgrg-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(-128, -78);
+          ctx.fillRect(128, 78, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
index 52449506..73c31e0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
@@ -17,29 +17,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/grgr-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/grgr-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js
index 29c6f8f..a94f8206 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js
@@ -13,29 +13,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/grgr-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/grgr-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
index d01acb8..c31528d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
@@ -17,31 +17,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/rgrg-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.translate(-128, -78);
-        ctx.fillRect(128, 78, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/rgrg-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.translate(-128, -78);
+          ctx.fillRect(128, 78, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js
index 91c14f9..ab7059b7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js
@@ -13,31 +13,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/rgrg-256x256.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.translate(-128, -78);
-        ctx.fillRect(128, 78, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/rgrg-256x256.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.translate(-128, -78);
+          ctx.fillRect(128, 78, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
index 2c91f1d7..1230be9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
@@ -17,32 +17,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 25);
-        ctx.fillRect(-50, -25, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 25);
+          ctx.fillRect(-50, -25, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js
index 147eadf8..1874aa9a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js
@@ -13,32 +13,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'no-repeat');
-        ctx.fillStyle = pattern;
-        ctx.translate(50, 25);
-        ctx.fillRect(-50, -25, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'no-repeat');
+          ctx.fillStyle = pattern;
+          ctx.translate(50, 25);
+          ctx.fillRect(-50, -25, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
index ed7cee29..3e7b8b2b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 16);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-x');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 16);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-x');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js
index d7efcfa..49d343cf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 16);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-x');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 16);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-x');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
index 342ce06a..9405b3a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
@@ -17,36 +17,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-x');
-        ctx.fillStyle = pattern;
-        ctx.translate(0, 16);
-        ctx.fillRect(0, -16, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 16);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,25, 0,255,0,255);
-        _assertPixel(canvas, 98,25, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-x');
+          ctx.fillStyle = pattern;
+          ctx.translate(0, 16);
+          ctx.fillRect(0, -16, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 16);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,25, 0,255,0,255);
+          _assertPixel(canvas, 98,25, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js
index 351092b..69c54c4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js
@@ -13,36 +13,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-x');
-        ctx.fillStyle = pattern;
-        ctx.translate(0, 16);
-        ctx.fillRect(0, -16, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 16);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,25, 0,255,0,255);
-        _assertPixel(canvas, 98,25, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-x');
+          ctx.fillStyle = pattern;
+          ctx.translate(0, 16);
+          ctx.fillRect(0, -16, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 16);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,25, 0,255,0,255);
+          _assertPixel(canvas, 98,25, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
index ad4a4a24..c81e3ce1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-x');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 16);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-x');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 16);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js
index 0e031109..c4194a3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-x');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 16);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-x');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 16);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
index 60699024..cef32b3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 16, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-y');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 16, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-y');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js
index 09e9b02..b460e24 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 16, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-y');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 16, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-y');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
index fd1cca2e9..490b2a19 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
@@ -17,36 +17,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-y');
-        ctx.fillStyle = pattern;
-        ctx.translate(48, 0);
-        ctx.fillRect(-48, 0, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 16, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 50,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 50,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-y');
+          ctx.fillStyle = pattern;
+          ctx.translate(48, 0);
+          ctx.fillRect(-48, 0, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 16, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 50,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 50,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js
index 1701d3cc..05fde11 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js
@@ -13,36 +13,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-y');
-        ctx.fillStyle = pattern;
-        ctx.translate(48, 0);
-        ctx.fillRect(-48, 0, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 16, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 50,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 50,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-y');
+          ctx.fillStyle = pattern;
+          ctx.translate(48, 0);
+          ctx.fillRect(-48, 0, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 16, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 50,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 50,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
index b7fbd9eb..9542806 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
@@ -17,33 +17,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-y');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 16, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-y');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 16, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js
index 7242c8ff..c421fbc0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js
@@ -13,33 +13,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red-16x16.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat-y');
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 16, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red-16x16.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat-y');
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 16, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.html
index 5251f93..377ae3e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); });
-t.done();
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js
index 6a7dd8d..8073f47 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); });
-t.done();
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html
index 76e54e9..95baf29 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html
@@ -17,31 +17,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-1x1.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, "");
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 200, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-1x1.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, "");
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 200, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js
index e3048881..5187ea4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js
@@ -13,31 +13,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/green-1x1.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, "");
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, 0, 200, 50);
-        _assertPixel(canvas, 1,1, 0,255,0,255);
-        _assertPixel(canvas, 98,1, 0,255,0,255);
-        _assertPixel(canvas, 1,48, 0,255,0,255);
-        _assertPixel(canvas, 98,48, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/green-1x1.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, "");
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, 0, 200, 50);
+          _assertPixel(canvas, 1,1, 0,255,0,255);
+          _assertPixel(canvas, 98,1, 0,255,0,255);
+          _assertPixel(canvas, 1,48, 0,255,0,255);
+          _assertPixel(canvas, 98,48, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.html
index 0e97c7a..d79551a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assert(ctx.createPattern(canvas, null) != null, "ctx.createPattern(canvas, null) != null");
-t.done();
+  _assert(ctx.createPattern(canvas, null) != null, "ctx.createPattern(canvas, null) != null");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js
index 57353f3..6ab4da9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assert(ctx.createPattern(canvas, null) != null, "ctx.createPattern(canvas, null) != null");
-t.done();
-
+  _assert(ctx.createPattern(canvas, null) != null, "ctx.createPattern(canvas, null) != null");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
index d5166d7..2f4a35de 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "repeat\0"); });
-t.done();
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "repeat\0"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js
index baafd4b..83e7c62 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "repeat\0"); });
-t.done();
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "repeat\0"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
index 731ef86..8ddd231 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, undefined); });
-t.done();
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, undefined); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js
index 1474ac4..f4f25ae 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, undefined); });
-t.done();
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, undefined); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
index 793ed67a..3a37b46a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "invalid"); });
-t.done();
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "invalid"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js
index 076cba5..3114dde2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "invalid"); });
-t.done();
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "invalid"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
index 59a0be42..58fb005 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "null"); });
-t.done();
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "null"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js
index 0adfe9bf..c8d1851 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "null"); });
-t.done();
-
+  assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "null"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.html
index 70524cb6d..cd7e424 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'");
-t.done();
+  _assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.worker.js
index 0d72f352..9e0ac8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.strokeStyle.default.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'");
-t.done();
-
+  _assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html
index cf887b62..603d5e5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = 'rgba(255, 0, 0, 0.01)';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 4);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = 'rgba(255, 0, 0, 0.01)';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 4);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.worker.js
index 7bcf744..0bc92ac4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.1.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = 'rgba(255, 0, 0, 0.01)';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 4);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = 'rgba(255, 0, 0, 0.01)';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 4);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.html
index cb03866..254d214 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = 'rgba(0, 0, 255, 0.5)';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = 'rgba(0, 0, 255, 0.5)';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.worker.js
index 8f4b981..ff543b3c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.2.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = 'rgba(0, 0, 255, 0.5)';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = 'rgba(0, 0, 255, 0.5)';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.html
index efc9fca9..2c50c0d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 50;
-ctx.globalAlpha = 0.5;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 50;
+  ctx.globalAlpha = 0.5;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.worker.js
index ddaae24..d8bc071c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.3.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 50;
-ctx.globalAlpha = 0.5;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 50;
+  ctx.globalAlpha = 0.5;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.html
index 295b612..d86ee4c4b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
-ctx.shadowColor = 'rgba(0, 0, 255, 0.707)';
-ctx.shadowOffsetY = 50;
-ctx.globalAlpha = 0.707;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
+  ctx.shadowColor = 'rgba(0, 0, 255, 0.707)';
+  ctx.shadowOffsetY = 50;
+  ctx.globalAlpha = 0.707;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.worker.js
index 16defd9..4fdb8ca7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.4.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
-ctx.shadowColor = 'rgba(0, 0, 255, 0.707)';
-ctx.shadowOffsetY = 50;
-ctx.globalAlpha = 0.707;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching)
+  ctx.shadowColor = 'rgba(0, 0, 255, 0.707)';
+  ctx.shadowOffsetY = 50;
+  ctx.globalAlpha = 0.707;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.html
index 3b1089d7..4c1a9b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = 'rgba(64, 0, 0, 0.5)';
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = 'rgba(64, 0, 0, 0.5)';
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.worker.js
index 5437c65..be4b78d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.alpha.5.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = 'rgba(64, 0, 0, 0.5)';
-ctx.shadowColor = '#00f';
-ctx.shadowOffsetY = 50;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = 'rgba(64, 0, 0, 0.5)';
+  ctx.shadowColor = '#00f';
+  ctx.shadowOffsetY = 50;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.html
index e6c4c2fd..2122588 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-t.done();
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js
index 9cf55e7..7643f0e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-t.done();
-
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.html
index a506da4..8f199766 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = -2;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 1;
-ctx.shadowBlur = Infinity;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 1;
-ctx.shadowBlur = -Infinity;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 1;
-ctx.shadowBlur = NaN;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-t.done();
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = -2;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = Infinity;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = -Infinity;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = NaN;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js
index 1f79c36..303b43e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowBlur = 1;
-ctx.shadowBlur = -2;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 1;
-ctx.shadowBlur = Infinity;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 1;
-ctx.shadowBlur = -Infinity;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 1;
-ctx.shadowBlur = NaN;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-t.done();
-
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = -2;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = Infinity;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = -Infinity;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 1;
+  ctx.shadowBlur = NaN;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.html
index b69b9c4..299826a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowBlur = 1;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 0.5;
-_assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5");
-ctx.shadowBlur = 1e6;
-_assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6");
-ctx.shadowBlur = 0;
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-t.done();
+  ctx.shadowBlur = 1;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 0.5;
+  _assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5");
+  ctx.shadowBlur = 1e6;
+  _assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6");
+  ctx.shadowBlur = 0;
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js
index b41fa249..c41588b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowBlur = 1;
-_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
-ctx.shadowBlur = 0.5;
-_assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5");
-ctx.shadowBlur = 1e6;
-_assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6");
-ctx.shadowBlur = 0;
-_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
-t.done();
-
+  ctx.shadowBlur = 1;
+  _assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1");
+  ctx.shadowBlur = 0.5;
+  _assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5");
+  ctx.shadowBlur = 1e6;
+  _assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6");
+  ctx.shadowBlur = 0;
+  _assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.html
index 44a25308..92a8bd1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'");
-t.done();
+  _assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.worker.js
index f8132d5..8b1ec38 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.initial.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'");
-t.done();
-
+  _assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.html
index ed09bcb..93a480b3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = 'bogus';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = 'red bogus';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = ctx;
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = undefined;
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-t.done();
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = 'bogus';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = 'red bogus';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = ctx;
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = undefined;
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js
index b100371..67e0fa8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = 'bogus';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = 'red bogus';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = ctx;
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = '#00ff00';
-ctx.shadowColor = undefined;
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-t.done();
-
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = 'bogus';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = 'red bogus';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = ctx;
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = '#00ff00';
+  ctx.shadowColor = undefined;
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.html
index 9511027..acd36360 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowColor = 'lime';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = 'RGBA(0,255, 0,0)';
-_assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'");
-t.done();
+  ctx.shadowColor = 'lime';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = 'RGBA(0,255, 0,0)';
+  _assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.worker.js
index f47e3660..02444723b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowColor.valid.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowColor = 'lime';
-_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
-ctx.shadowColor = 'RGBA(0,255, 0,0)';
-_assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'");
-t.done();
-
+  ctx.shadowColor = 'lime';
+  _assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'");
+  ctx.shadowColor = 'RGBA(0,255, 0,0)';
+  _assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.html
index e568569a..52be5ad5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
-t.done();
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js
index af2e77f4..b7b399b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
-t.done();
-
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.html
index 58c8efec..be055aa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = Infinity;
-ctx.shadowOffsetY = Infinity;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = -Infinity;
-ctx.shadowOffsetY = -Infinity;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = NaN;
-ctx.shadowOffsetY = NaN;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-t.done();
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = Infinity;
+  ctx.shadowOffsetY = Infinity;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = -Infinity;
+  ctx.shadowOffsetY = -Infinity;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = NaN;
+  ctx.shadowOffsetY = NaN;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js
index 8926147..37ae2e6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = Infinity;
-ctx.shadowOffsetY = Infinity;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = -Infinity;
-ctx.shadowOffsetY = -Infinity;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-ctx.shadowOffsetX = NaN;
-ctx.shadowOffsetY = NaN;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-t.done();
-
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = Infinity;
+  ctx.shadowOffsetY = Infinity;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = -Infinity;
+  ctx.shadowOffsetY = -Infinity;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  ctx.shadowOffsetX = NaN;
+  ctx.shadowOffsetY = NaN;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.html
index 1ad622c..785966cb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.html
@@ -17,30 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-ctx.shadowOffsetX = 0.5;
-ctx.shadowOffsetY = 0.25;
-_assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5");
-_assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25");
-ctx.shadowOffsetX = -0.5;
-ctx.shadowOffsetY = -0.25;
-_assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5");
-_assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25");
-ctx.shadowOffsetX = 0;
-ctx.shadowOffsetY = 0;
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
-ctx.shadowOffsetX = 1e6;
-ctx.shadowOffsetY = 1e6;
-_assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6");
-_assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6");
-t.done();
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 0.5;
+  ctx.shadowOffsetY = 0.25;
+  _assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5");
+  _assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25");
+  ctx.shadowOffsetX = -0.5;
+  ctx.shadowOffsetY = -0.25;
+  _assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5");
+  _assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25");
+  ctx.shadowOffsetX = 0;
+  ctx.shadowOffsetY = 0;
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
+  ctx.shadowOffsetX = 1e6;
+  ctx.shadowOffsetY = 1e6;
+  _assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6");
+  _assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js
index eed84b5..a6e047e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js
@@ -13,30 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowOffsetX = 1;
-ctx.shadowOffsetY = 2;
-_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
-_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
-ctx.shadowOffsetX = 0.5;
-ctx.shadowOffsetY = 0.25;
-_assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5");
-_assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25");
-ctx.shadowOffsetX = -0.5;
-ctx.shadowOffsetY = -0.25;
-_assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5");
-_assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25");
-ctx.shadowOffsetX = 0;
-ctx.shadowOffsetY = 0;
-_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
-_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
-ctx.shadowOffsetX = 1e6;
-ctx.shadowOffsetY = 1e6;
-_assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6");
-_assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6");
-t.done();
-
+  ctx.shadowOffsetX = 1;
+  ctx.shadowOffsetY = 2;
+  _assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1");
+  _assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2");
+  ctx.shadowOffsetX = 0.5;
+  ctx.shadowOffsetY = 0.25;
+  _assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5");
+  _assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25");
+  ctx.shadowOffsetX = -0.5;
+  ctx.shadowOffsetY = -0.25;
+  _assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5");
+  _assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25");
+  ctx.shadowOffsetX = 0;
+  ctx.shadowOffsetY = 0;
+  _assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0");
+  _assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0");
+  ctx.shadowOffsetX = 1e6;
+  ctx.shadowOffsetY = 1e6;
+  _assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6");
+  _assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.html
index 5fea8a7c..ae046cfe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.drawImage(offscreenCanvas2, 0, -50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.drawImage(offscreenCanvas2, 0, -50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.worker.js
index 663e89f..21d6309 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.alpha.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.drawImage(offscreenCanvas2, 0, -50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.drawImage(offscreenCanvas2, 0, -50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.html
index 2fc6b547..3ba1cf1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(offscreenCanvas2, 0, -50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(offscreenCanvas2, 0, -50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.worker.js
index 20c433b2..8ec3f4a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.basic.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(offscreenCanvas2, 0, -50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(offscreenCanvas2, 0, -50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.html
index 1bfcb3bf..960d8709 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(offscreenCanvas2, 0, -50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(offscreenCanvas2, 0, -50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.worker.js
index 413ba6b..7fd807b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.1.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.drawImage(offscreenCanvas2, 0, -50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.drawImage(offscreenCanvas2, 0, -50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.html
index 6d30dfc..2f1d31d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.drawImage(offscreenCanvas2, 50, -50);
-ctx.shadowColor = '#f00';
-ctx.drawImage(offscreenCanvas2, -50, -50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.drawImage(offscreenCanvas2, 50, -50);
+  ctx.shadowColor = '#f00';
+  ctx.drawImage(offscreenCanvas2, -50, -50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.worker.js
index d702ded7..1347eb09 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.canvas.transparent.2.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var ctx2 = offscreenCanvas2.getContext('2d');
-ctx2.fillStyle = '#f00';
-ctx2.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.drawImage(offscreenCanvas2, 50, -50);
-ctx.shadowColor = '#f00';
-ctx.drawImage(offscreenCanvas2, -50, -50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var ctx2 = offscreenCanvas2.getContext('2d');
+  ctx2.fillStyle = '#f00';
+  ctx2.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.drawImage(offscreenCanvas2, 50, -50);
+  ctx.shadowColor = '#f00';
+  ctx.drawImage(offscreenCanvas2, -50, -50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.html
index 4beb121..a762ab5f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.save();
-ctx.beginPath();
-ctx.rect(50, 0, 50, 50);
-ctx.clip();
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-ctx.restore();
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(50, 0, 50, 50);
+  ctx.clip();
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.restore();
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.worker.js
index 4fafad8..2a6423a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.1.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.save();
-ctx.beginPath();
-ctx.rect(50, 0, 50, 50);
-ctx.clip();
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-ctx.restore();
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(50, 0, 50, 50);
+  ctx.clip();
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.restore();
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.html
index bc3de09..31055d72 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.save();
-ctx.beginPath();
-ctx.rect(0, 0, 50, 50);
-ctx.clip();
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-ctx.restore();
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(0, 0, 50, 50);
+  ctx.clip();
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.restore();
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.worker.js
index dd2712af..2c6b8dea 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.2.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.save();
-ctx.beginPath();
-ctx.rect(0, 0, 50, 50);
-ctx.clip();
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-ctx.restore();
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(0, 0, 50, 50);
+  ctx.clip();
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.restore();
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.html
index 9656feb..3b62b233 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.save();
-ctx.beginPath();
-ctx.rect(0, 0, 50, 50);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(-50, 0, 50, 50);
-ctx.restore();
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(0, 0, 50, 50);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(-50, 0, 50, 50);
+  ctx.restore();
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.worker.js
index ed4983a..c97f9e5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.clip.3.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.save();
-ctx.beginPath();
-ctx.rect(0, 0, 50, 50);
-ctx.clip();
-ctx.fillStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(-50, 0, 50, 50);
-ctx.restore();
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.save();
+  ctx.beginPath();
+  ctx.rect(0, 0, 50, 50);
+  ctx.clip();
+  ctx.fillStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(-50, 0, 50, 50);
+  ctx.restore();
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.html
index 13e0daf3..e9a400f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(-100, 0, 200, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(-100, 0, 200, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.worker.js
index 04d4801..10baafa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.1.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(-100, 0, 200, 50);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(-100, 0, 200, 50);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.html
index aea3699..0a4c515 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.shadowColor = '#f00';
-ctx.shadowBlur = 1;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(-10, -10, 120, 70);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.shadowColor = '#f00';
+  ctx.shadowBlur = 1;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(-10, -10, 120, 70);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.worker.js
index 505e3d5..20c89c1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.2.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'xor';
-ctx.shadowColor = '#f00';
-ctx.shadowBlur = 1;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(-10, -10, 120, 70);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'xor';
+  ctx.shadowColor = '#f00';
+  ctx.shadowBlur = 1;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(-10, -10, 120, 70);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.html
index 2218602..5621843 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.html
@@ -17,19 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.shadowColor = '#f00';
-ctx.shadowBlur = 10;
-ctx.fillStyle = '#f00';
-ctx.fillRect(200, 0, 100, 50);
-_assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.shadowColor = '#f00';
+  ctx.shadowBlur = 10;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(200, 0, 100, 50);
+  _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.worker.js
index fd58d06..1257b3f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.composite.3.worker.js
@@ -13,19 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.globalCompositeOperation = 'destination-out';
-ctx.shadowColor = '#f00';
-ctx.shadowBlur = 10;
-ctx.fillStyle = '#f00';
-ctx.fillRect(200, 0, 100, 50);
-_assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.globalCompositeOperation = 'destination-out';
+  ctx.shadowColor = '#f00';
+  ctx.shadowBlur = 10;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(200, 0, 100, 50);
+  _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+  _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.html
index edc4c527..a25be8eb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowBlur = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowBlur = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.worker.js
index 85bf21a..859ae8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.blur.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowBlur = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowBlur = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.html
index f0c92820..de85b73 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowColor = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.shadowColor = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.worker.js
index dae0ea64..7ccd1351 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.1.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.shadowColor = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.shadowColor = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.html
index 3c27b98..a57cb66 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.worker.js
index 2f1573e..e068a7a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.off.2.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#f00';
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#f00';
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.html
index 9107ef25..70b0a84d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.worker.js
index d8e7d503..975c621f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.x.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.html
index 77a79d8..df8bcc2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.worker.js
index 53140b1..1dae100 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.enable.y.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.globalCompositeOperation = 'destination-atop';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 0.1;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.globalCompositeOperation = 'destination-atop';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 0.1;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.html
index d92a248..38483858 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, 'rgba(255,0,0,0.5)');
-gradient.addColorStop(1, 'rgba(255,0,0,0.5)');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, 'rgba(255,0,0,0.5)');
+  gradient.addColorStop(1, 'rgba(255,0,0,0.5)');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.worker.js
index b5b65a0..65d582d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.alpha.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, 'rgba(255,0,0,0.5)');
-gradient.addColorStop(1, 'rgba(255,0,0,0.5)');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-t.done();
-
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, 'rgba(255,0,0,0.5)');
+  gradient.addColorStop(1, 'rgba(255,0,0,0.5)');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.html
index b88281be..c411b64e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, '#f00');
-gradient.addColorStop(1, '#f00');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, '#f00');
+  gradient.addColorStop(1, '#f00');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.worker.js
index ef9ce71..2630acc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.basic.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, '#f00');
-gradient.addColorStop(1, '#f00');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, '#f00');
+  gradient.addColorStop(1, '#f00');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.html
index f71a8b4..852d4268 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, 'rgba(0,0,0,0)');
-gradient.addColorStop(1, 'rgba(0,0,0,0)');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, 'rgba(0,0,0,0)');
+  gradient.addColorStop(1, 'rgba(0,0,0,0)');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.worker.js
index b60d6f7..b084014 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.1.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, 'rgba(0,0,0,0)');
-gradient.addColorStop(1, 'rgba(0,0,0,0)');
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, 'rgba(0,0,0,0)');
+  gradient.addColorStop(1, 'rgba(0,0,0,0)');
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.html
index d7c560e..b2c7967d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, '#f00');
-gradient.addColorStop(0.499, '#f00');
-gradient.addColorStop(0.5, 'rgba(0,0,0,0)');
-gradient.addColorStop(1, 'rgba(0,0,0,0)');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, '#f00');
+  gradient.addColorStop(0.499, '#f00');
+  gradient.addColorStop(0.5, 'rgba(0,0,0,0)');
+  gradient.addColorStop(1, 'rgba(0,0,0,0)');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.worker.js
index 7226b00..bc651c59 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.gradient.transparent.2.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var gradient = ctx.createLinearGradient(0, 0, 100, 0);
-gradient.addColorStop(0, '#f00');
-gradient.addColorStop(0.499, '#f00');
-gradient.addColorStop(0.5, 'rgba(0,0,0,0)');
-gradient.addColorStop(1, 'rgba(0,0,0,0)');
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.fillStyle = gradient;
-ctx.fillRect(0, -50, 100, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  var gradient = ctx.createLinearGradient(0, 0, 100, 0);
+  gradient.addColorStop(0, '#f00');
+  gradient.addColorStop(0.499, '#f00');
+  gradient.addColorStop(0.5, 'rgba(0,0,0,0)');
+  gradient.addColorStop(1, 'rgba(0,0,0,0)');
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.fillStyle = gradient;
+  ctx.fillRect(0, -50, 100, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.html
index 5add7eae..6a1372ee 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent50.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, -50);
-        _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent50.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, -50);
+          _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.worker.js
index 7a1d9921..726c6d98 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.alpha.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#00f';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent50.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, -50);
-        _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#00f';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent50.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, -50);
+          _assertPixelApprox(canvas, 50,25, 127,0,127,255, 2);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.html
index 101cfba..04398818 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, -50);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, -50);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.worker.js
index f1d72de..cf8f072 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.basic.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, -50);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, -50);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.html
index c56a73f7..b53bd89 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.html
@@ -17,30 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0, 100, 50, -10, -50, 240, 50);
-        _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0, 100, 50, -10, -50, 240, 50);
+          _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.worker.js
index a8c0ead..51db38d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.worker.js
@@ -13,30 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, 0, 100, 50, -10, -50, 240, 50);
-        _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, 0, 100, 50, -10, -50, 240, 50);
+          _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.html
index cd09503..9b04130a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.html
@@ -17,30 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#f00';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 50, 0, 50, 50, 0, -50, 50, 50);
-        _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#f00';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 50, 0, 50, 50, 0, -50, 50, 50);
+          _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.worker.js
index 60e32b4..e5824d9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.section.worker.js
@@ -13,30 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#f00';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 50, 0, 50, 50, 0, -50, 50, 50);
-        _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
-        _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#f00';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 50, 0, 50, 50, 0, -50, 50, 50);
+          _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
+          _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.html
index 3784405..fef5711 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, -50);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, -50);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.worker.js
index 8e8ded8..a529140 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.1.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 0, -50);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 0, -50);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.html
index 996bce7..bdd5c12 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.html
@@ -17,34 +17,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 50, -50);
-        ctx.shadowColor = '#f00';
-        ctx.drawImage(bitmap, -50, -50);
-        _assertPixel(canvas, 25,25, 0,255,0,255);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-        _assertPixel(canvas, 75,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 50, -50);
+          ctx.shadowColor = '#f00';
+          ctx.drawImage(bitmap, -50, -50);
+          _assertPixel(canvas, 25,25, 0,255,0,255);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+          _assertPixel(canvas, 75,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.worker.js
index 5075d6c..26e0afc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.transparent.2.worker.js
@@ -13,34 +13,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#f00';
-ctx.fillRect(50, 0, 50, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        ctx.drawImage(bitmap, 50, -50);
-        ctx.shadowColor = '#f00';
-        ctx.drawImage(bitmap, -50, -50);
-        _assertPixel(canvas, 25,25, 0,255,0,255);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-        _assertPixel(canvas, 75,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          ctx.drawImage(bitmap, 50, -50);
+          ctx.shadowColor = '#f00';
+          ctx.drawImage(bitmap, -50, -50);
+          _assertPixel(canvas, 25,25, 0,255,0,255);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+          _assertPixel(canvas, 75,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.html
index 97c04018..cc0d1adb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = -50;
-ctx.fillRect(50, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = -50;
+  ctx.fillRect(50, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.worker.js
index 93c2265..14c709a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeX.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = -50;
-ctx.fillRect(50, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = -50;
+  ctx.fillRect(50, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.html
index 7f5d5ab9..82094cf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = -25;
-ctx.fillRect(0, 25, 100, 25);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = -25;
+  ctx.fillRect(0, 25, 100, 25);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.worker.js
index 6ee0bcc7..036c615 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.negativeY.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = -25;
-ctx.fillRect(0, 25, 100, 25);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = -25;
+  ctx.fillRect(0, 25, 100, 25);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.html
index a745de8..7094e98 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.worker.js
index 241fbda..176aca45 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveX.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 50;
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 25,25, 0,255,0,255);
-_assertPixel(canvas, 75,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 50;
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 25,25, 0,255,0,255);
+  _assertPixel(canvas, 75,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.html
index 168b1796..75e9b0af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 25;
-ctx.fillRect(0, 0, 100, 25);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 25;
+  ctx.fillRect(0, 0, 100, 25);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.worker.js
index b3236d6..6b4d0c6a2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.offset.positiveY.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 25;
-ctx.fillRect(0, 0, 100, 25);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 25;
+  ctx.fillRect(0, 0, 100, 25);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.html
index 207160d..4980514 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 100;
-ctx.fillRect(-100, 0, 25, 50);
-ctx.shadowOffsetX = -100;
-ctx.fillRect(175, 0, 25, 50);
-ctx.shadowOffsetX = 0;
-ctx.shadowOffsetY = 100;
-ctx.fillRect(25, -100, 50, 25);
-ctx.shadowOffsetY = -100;
-ctx.fillRect(25, 125, 50, 25);
-_assertPixel(canvas, 12,25, 0,255,0,255);
-_assertPixel(canvas, 87,25, 0,255,0,255);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 100;
+  ctx.fillRect(-100, 0, 25, 50);
+  ctx.shadowOffsetX = -100;
+  ctx.fillRect(175, 0, 25, 50);
+  ctx.shadowOffsetX = 0;
+  ctx.shadowOffsetY = 100;
+  ctx.fillRect(25, -100, 50, 25);
+  ctx.shadowOffsetY = -100;
+  ctx.fillRect(25, 125, 50, 25);
+  _assertPixel(canvas, 12,25, 0,255,0,255);
+  _assertPixel(canvas, 87,25, 0,255,0,255);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.worker.js
index d0787d6..d2a071f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.outside.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 100;
-ctx.fillRect(-100, 0, 25, 50);
-ctx.shadowOffsetX = -100;
-ctx.fillRect(175, 0, 25, 50);
-ctx.shadowOffsetX = 0;
-ctx.shadowOffsetY = 100;
-ctx.fillRect(25, -100, 50, 25);
-ctx.shadowOffsetY = -100;
-ctx.fillRect(25, 125, 50, 25);
-_assertPixel(canvas, 12,25, 0,255,0,255);
-_assertPixel(canvas, 87,25, 0,255,0,255);
-_assertPixel(canvas, 50,12, 0,255,0,255);
-_assertPixel(canvas, 50,37, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 100;
+  ctx.fillRect(-100, 0, 25, 50);
+  ctx.shadowOffsetX = -100;
+  ctx.fillRect(175, 0, 25, 50);
+  ctx.shadowOffsetX = 0;
+  ctx.shadowOffsetY = 100;
+  ctx.fillRect(25, -100, 50, 25);
+  ctx.shadowOffsetY = -100;
+  ctx.fillRect(25, 125, 50, 25);
+  _assertPixel(canvas, 12,25, 0,255,0,255);
+  _assertPixel(canvas, 87,25, 0,255,0,255);
+  _assertPixel(canvas, 50,12, 0,255,0,255);
+  _assertPixel(canvas, 50,37, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.html
index 48615ea..f2aebf79 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.html
@@ -17,29 +17,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent50.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.shadowOffsetY = 50;
-        ctx.shadowColor = '#00f';
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent50.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.shadowOffsetY = 50;
+          ctx.shadowColor = '#00f';
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.worker.js
index 6a53384..2dfa1040 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.alpha.worker.js
@@ -13,29 +13,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent50.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.shadowOffsetY = 50;
-        ctx.shadowColor = '#00f';
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent50.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.shadowOffsetY = 50;
+          ctx.shadowColor = '#00f';
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.html
index 586f7ef..b26e476 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.html
@@ -17,29 +17,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.shadowColor = '#0f0';
-        ctx.shadowOffsetY = 50;
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.shadowColor = '#0f0';
+          ctx.shadowOffsetY = 50;
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.worker.js
index 6d2dce7c..f972db85 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.basic.worker.js
@@ -13,29 +13,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/red.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.shadowColor = '#0f0';
-        ctx.shadowOffsetY = 50;
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/red.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.shadowColor = '#0f0';
+          ctx.shadowOffsetY = 50;
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.html
index 6d97b59..62dd7ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.html
@@ -17,29 +17,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.shadowColor = '#f00';
-        ctx.shadowOffsetY = 50;
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.shadowColor = '#f00';
+          ctx.shadowOffsetY = 50;
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.worker.js
index cda0aa9..120c5e45 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.1.worker.js
@@ -13,29 +13,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/transparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(0, 0, 100, 50);
-        ctx.shadowColor = '#f00';
-        ctx.shadowOffsetY = 50;
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/transparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(0, 0, 100, 50);
+          ctx.shadowColor = '#f00';
+          ctx.shadowOffsetY = 50;
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.html
index 600fbd0..423f064 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.html
@@ -17,34 +17,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 50, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(50, 0, 50, 50);
-        ctx.shadowOffsetY = 50;
-        ctx.shadowColor = '#0f0';
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-        _assertPixel(canvas, 25,25, 0,255,0,255);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-        _assertPixel(canvas, 75,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 50, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(50, 0, 50, 50);
+          ctx.shadowOffsetY = 50;
+          ctx.shadowColor = '#0f0';
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+          _assertPixel(canvas, 25,25, 0,255,0,255);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+          _assertPixel(canvas, 75,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.worker.js
index 2aa3166..ef8313a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.pattern.transparent.2.worker.js
@@ -13,34 +13,33 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var promise = new Promise(function(resolve, reject) {
-    var xhr = new XMLHttpRequest();
-    xhr.open("GET", '/images/redtransparent.png');
-    xhr.responseType = 'blob';
-    xhr.send();
-    xhr.onload = function() {
-        resolve(xhr.response);
-    };
-});
-promise.then(function(response) {
-    createImageBitmap(response).then(bitmap => {
-        var pattern = ctx.createPattern(bitmap, 'repeat');
-        ctx.fillStyle = '#f00';
-        ctx.fillRect(0, 0, 50, 50);
-        ctx.fillStyle = '#0f0';
-        ctx.fillRect(50, 0, 50, 50);
-        ctx.shadowOffsetY = 50;
-        ctx.shadowColor = '#0f0';
-        ctx.fillStyle = pattern;
-        ctx.fillRect(0, -50, 100, 50);
-        _assertPixel(canvas, 25,25, 0,255,0,255);
-        _assertPixel(canvas, 50,25, 0,255,0,255);
-        _assertPixel(canvas, 75,25, 0,255,0,255);
-    }, t_fail);
-}).then(t_pass, t_fail);
-
+  var promise = new Promise(function(resolve, reject) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", '/images/redtransparent.png');
+      xhr.responseType = 'blob';
+      xhr.send();
+      xhr.onload = function() {
+          resolve(xhr.response);
+      };
+  });
+  promise.then(function(response) {
+      createImageBitmap(response).then(bitmap => {
+          var pattern = ctx.createPattern(bitmap, 'repeat');
+          ctx.fillStyle = '#f00';
+          ctx.fillRect(0, 0, 50, 50);
+          ctx.fillStyle = '#0f0';
+          ctx.fillRect(50, 0, 50, 50);
+          ctx.shadowOffsetY = 50;
+          ctx.shadowColor = '#0f0';
+          ctx.fillStyle = pattern;
+          ctx.fillRect(0, -50, 100, 50);
+          _assertPixel(canvas, 25,25, 0,255,0,255);
+          _assertPixel(canvas, 50,25, 0,255,0,255);
+          _assertPixel(canvas, 75,25, 0,255,0,255);
+      }, t_fail);
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.html
index 2711025..27edc875 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.moveTo(0, -25);
-ctx.lineTo(100, -25);
-ctx.stroke();
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.moveTo(0, -25);
+  ctx.lineTo(100, -25);
+  ctx.stroke();
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.worker.js
index 7ebbd8e..b62e6c7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.basic.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.moveTo(0, -25);
-ctx.lineTo(100, -25);
-ctx.stroke();
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.moveTo(0, -25);
+  ctx.lineTo(100, -25);
+  ctx.stroke();
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.html
index 3854669..46f915b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.lineCap = 'butt';
-ctx.moveTo(-50, -25);
-ctx.lineTo(0, -25);
-ctx.moveTo(100, -25);
-ctx.lineTo(150, -25);
-ctx.stroke();
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.lineCap = 'butt';
+  ctx.moveTo(-50, -25);
+  ctx.lineTo(0, -25);
+  ctx.moveTo(100, -25);
+  ctx.lineTo(150, -25);
+  ctx.stroke();
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.worker.js
index 7ecd07b1..21c588a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.1.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.lineCap = 'butt';
-ctx.moveTo(-50, -25);
-ctx.lineTo(0, -25);
-ctx.moveTo(100, -25);
-ctx.lineTo(150, -25);
-ctx.stroke();
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.lineCap = 'butt';
+  ctx.moveTo(-50, -25);
+  ctx.lineTo(0, -25);
+  ctx.moveTo(100, -25);
+  ctx.lineTo(150, -25);
+  ctx.stroke();
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.html
index bd18ec6..91bfd80 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.lineCap = 'square';
-ctx.moveTo(25, -25);
-ctx.lineTo(75, -25);
-ctx.stroke();
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.lineCap = 'square';
+  ctx.moveTo(25, -25);
+  ctx.lineTo(75, -25);
+  ctx.stroke();
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.worker.js
index 7c7dc26..aa607cd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.cap.2.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetY = 50;
-ctx.beginPath();
-ctx.lineWidth = 50;
-ctx.lineCap = 'square';
-ctx.moveTo(25, -25);
-ctx.lineTo(75, -25);
-ctx.stroke();
-_assertPixel(canvas, 1,25, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetY = 50;
+  ctx.beginPath();
+  ctx.lineWidth = 50;
+  ctx.lineCap = 'square';
+  ctx.moveTo(25, -25);
+  ctx.lineTo(75, -25);
+  ctx.stroke();
+  _assertPixel(canvas, 1,25, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.html
index 8faa2fe..1a57acb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'bevel';
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100);
-ctx.stroke();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'bevel';
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100);
+  ctx.stroke();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.worker.js
index e81a9b21..8628fd99 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.1.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'bevel';
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100);
-ctx.stroke();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'bevel';
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100);
+  ctx.stroke();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.html
index 7b52a7c9..394226c0e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'miter';
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100);
-ctx.stroke();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'miter';
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100);
+  ctx.stroke();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.worker.js
index 269a49d7..06bcbd2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.2.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-ctx.fillStyle = '#0f0';
-ctx.fillRect(50, 0, 50, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#0f0';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'miter';
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100);
-ctx.stroke();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(50, 0, 50, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#0f0';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'miter';
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100);
+  ctx.stroke();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.html
index 6110d3a..2bf7d3d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'miter';
-ctx.miterLimit = 0.1;
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3)
-ctx.stroke();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'miter';
+  ctx.miterLimit = 0.1;
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3)
+  ctx.stroke();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.worker.js
index 43144b0f..5c52537 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.stroke.join.3.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#f00';
-ctx.shadowColor = '#f00';
-ctx.shadowOffsetX = 100;
-ctx.lineWidth = 200;
-ctx.lineJoin = 'miter';
-ctx.miterLimit = 0.1;
-ctx.beginPath();
-ctx.moveTo(-200, -50);
-ctx.lineTo(-150, -50);
-ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3)
-ctx.stroke();
-_assertPixel(canvas, 1,1, 0,255,0,255);
-_assertPixel(canvas, 48,48, 0,255,0,255);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 98,48, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#f00';
+  ctx.shadowColor = '#f00';
+  ctx.shadowOffsetX = 100;
+  ctx.lineWidth = 200;
+  ctx.lineJoin = 'miter';
+  ctx.miterLimit = 0.1;
+  ctx.beginPath();
+  ctx.moveTo(-200, -50);
+  ctx.lineTo(-150, -50);
+  ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3)
+  ctx.stroke();
+  _assertPixel(canvas, 1,1, 0,255,0,255);
+  _assertPixel(canvas, 48,48, 0,255,0,255);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 98,48, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.html
index d6c4e483..3fefcfc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.translate(100, 100);
-ctx.fillRect(-100, -150, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.translate(100, 100);
+  ctx.fillRect(-100, -150, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.worker.js
index 38cdf7e..6227d848 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.1.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.translate(100, 100);
-ctx.fillRect(-100, -150, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.translate(100, 100);
+  ctx.fillRect(-100, -150, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.html
index f0b1607..a4ba056 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.rotate(Math.PI)
-ctx.fillRect(-100, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.rotate(Math.PI)
+  ctx.fillRect(-100, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.worker.js
index 9f204d2..32c322af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/shadows/2d.shadow.transform.2.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.shadowOffsetY = 50;
-ctx.shadowColor = '#0f0';
-ctx.rotate(Math.PI)
-ctx.fillRect(-100, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.shadowOffsetY = 50;
+  ctx.shadowColor = '#0f0';
+  ctx.rotate(Math.PI)
+  ctx.fillRect(-100, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.html
index fda5ee4..7af2c77 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
-t.done();
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.worker.js
index b2c940f..adee16c0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.default.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
-t.done();
-
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.html
index 8b6f409a..a7679d65 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'bogus';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'bogus';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'END';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'END';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'end ';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'end ';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'end\0';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
-t.done();
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'end\0';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.worker.js
index 60ad8fa..dfd4c6625 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.invalid.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'bogus';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'bogus';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'END';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'END';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'end ';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'end ';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'start';
-ctx.textAlign = 'end\0';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
-t.done();
-
+  ctx.textAlign = 'start';
+  ctx.textAlign = 'end\0';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.html
index a78b58e..eef6b29 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textAlign = 'start';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'end';
-_assertSame(ctx.textAlign, 'end', "ctx.textAlign", "'end'");
+  ctx.textAlign = 'end';
+  _assertSame(ctx.textAlign, 'end', "ctx.textAlign", "'end'");
 
-ctx.textAlign = 'left';
-_assertSame(ctx.textAlign, 'left', "ctx.textAlign", "'left'");
+  ctx.textAlign = 'left';
+  _assertSame(ctx.textAlign, 'left', "ctx.textAlign", "'left'");
 
-ctx.textAlign = 'right';
-_assertSame(ctx.textAlign, 'right', "ctx.textAlign", "'right'");
+  ctx.textAlign = 'right';
+  _assertSame(ctx.textAlign, 'right', "ctx.textAlign", "'right'");
 
-ctx.textAlign = 'center';
-_assertSame(ctx.textAlign, 'center', "ctx.textAlign", "'center'");
-t.done();
+  ctx.textAlign = 'center';
+  _assertSame(ctx.textAlign, 'center', "ctx.textAlign", "'center'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.worker.js
index fdf1907..767d642 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.align.valid.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textAlign = 'start';
-_assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
+  ctx.textAlign = 'start';
+  _assertSame(ctx.textAlign, 'start', "ctx.textAlign", "'start'");
 
-ctx.textAlign = 'end';
-_assertSame(ctx.textAlign, 'end', "ctx.textAlign", "'end'");
+  ctx.textAlign = 'end';
+  _assertSame(ctx.textAlign, 'end', "ctx.textAlign", "'end'");
 
-ctx.textAlign = 'left';
-_assertSame(ctx.textAlign, 'left', "ctx.textAlign", "'left'");
+  ctx.textAlign = 'left';
+  _assertSame(ctx.textAlign, 'left', "ctx.textAlign", "'left'");
 
-ctx.textAlign = 'right';
-_assertSame(ctx.textAlign, 'right', "ctx.textAlign", "'right'");
+  ctx.textAlign = 'right';
+  _assertSame(ctx.textAlign, 'right', "ctx.textAlign", "'right'");
 
-ctx.textAlign = 'center';
-_assertSame(ctx.textAlign, 'center', "ctx.textAlign", "'center'");
-t.done();
-
+  ctx.textAlign = 'center';
+  _assertSame(ctx.textAlign, 'center', "ctx.textAlign", "'center'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.html
index 8bd20c6..525a02f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
-t.done();
+  _assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.worker.js
index ea8693f0..667adb8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.default.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
-t.done();
-
+  _assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.html
index a850ac1..f30fad6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'bogus';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'bogus';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'MIDDLE';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'MIDDLE';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'middle ';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'middle ';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'middle\0';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
-t.done();
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'middle\0';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.worker.js
index d4cdc85..4310f81 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.invalid.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'bogus';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'bogus';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'MIDDLE';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'MIDDLE';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'middle ';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'middle ';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'top';
-ctx.textBaseline = 'middle\0';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
-t.done();
-
+  ctx.textBaseline = 'top';
+  ctx.textBaseline = 'middle\0';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.html
index 8fdc0588..9ff843c1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textBaseline = 'top';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'hanging';
-_assertSame(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'");
+  ctx.textBaseline = 'hanging';
+  _assertSame(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'");
 
-ctx.textBaseline = 'middle';
-_assertSame(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'");
+  ctx.textBaseline = 'middle';
+  _assertSame(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'");
 
-ctx.textBaseline = 'alphabetic';
-_assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
+  ctx.textBaseline = 'alphabetic';
+  _assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
 
-ctx.textBaseline = 'ideographic';
-_assertSame(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'");
+  ctx.textBaseline = 'ideographic';
+  _assertSame(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'");
 
-ctx.textBaseline = 'bottom';
-_assertSame(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'");
-t.done();
+  ctx.textBaseline = 'bottom';
+  _assertSame(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.worker.js
index 62f6983d..2f422f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.baseline.valid.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textBaseline = 'top';
-_assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
+  ctx.textBaseline = 'top';
+  _assertSame(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'");
 
-ctx.textBaseline = 'hanging';
-_assertSame(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'");
+  ctx.textBaseline = 'hanging';
+  _assertSame(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'");
 
-ctx.textBaseline = 'middle';
-_assertSame(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'");
+  ctx.textBaseline = 'middle';
+  _assertSame(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'");
 
-ctx.textBaseline = 'alphabetic';
-_assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
+  ctx.textBaseline = 'alphabetic';
+  _assertSame(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'");
 
-ctx.textBaseline = 'ideographic';
-_assertSame(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'");
+  ctx.textBaseline = 'ideographic';
+  _assertSame(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'");
 
-ctx.textBaseline = 'bottom';
-_assertSame(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'");
-t.done();
-
+  ctx.textBaseline = 'bottom';
+  _assertSame(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.html
index 438e675..f855930f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'center';
-    ctx.fillText('DD', 50, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'center';
+      ctx.fillText('DD', 50, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js
index 9487e6a..a24b839 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'center';
-    ctx.fillText('DD', 50, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'center';
+      ctx.fillText('DD', 50, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html
index 6134042..ae69277be 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'end';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'end';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js
index 2a7b9e94..64dc013 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'end';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'end';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html
index a4b5024..cabc85e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'rtl';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'end';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'rtl';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'end';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js
index deb8227e..b177d0e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'rtl';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'end';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'rtl';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'end';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.html
index 6e69a83..0166b9b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'left';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'left';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js
index 9c555126..be8a4e1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'left';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'left';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.html
index a56c7ca..011f6dc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'right';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'right';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js
index f246963..43f00dcb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'right';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'right';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html
index ba8c440..b15fb4c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'start';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'start';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js
index 2de9d50..a320493 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'start';
-    ctx.fillText('DD', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'start';
+      ctx.fillText('DD', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html
index 32f83430..c8a0de2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'rtl';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'start';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'rtl';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'start';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js
index 41cb57b9..ad03dd5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'rtl';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'start';
-    ctx.fillText('DD', 100, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'rtl';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'start';
+      ctx.fillText('DD', 100, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html
index bd6a180..6cb550f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'alphabetic';
-    ctx.fillText('CC', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'alphabetic';
+      ctx.fillText('CC', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js
index 5b4fe08..ed2c3f88 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'alphabetic';
-    ctx.fillText('CC', 0, 37.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'alphabetic';
+      ctx.fillText('CC', 0, 37.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html
index 4e5fc8e..398b4a9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'bottom';
-    ctx.fillText('CC', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'bottom';
+      ctx.fillText('CC', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js
index 1c7cab3e..7273763 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'bottom';
-    ctx.fillText('CC', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'bottom';
+      ctx.fillText('CC', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html
index d0d5737..0b822834 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'hanging';
-    ctx.fillText('CC', 0, 12.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'hanging';
+      ctx.fillText('CC', 0, 12.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js
index 79df7d8..fca74d6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'hanging';
-    ctx.fillText('CC', 0, 12.5);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'hanging';
+      ctx.fillText('CC', 0, 12.5);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html
index 144d56f7..c996444b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'ideographic';
-    ctx.fillText('CC', 0, 31.25);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'ideographic';
+      ctx.fillText('CC', 0, 31.25);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js
index ef7d018..0ffa6fe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'ideographic';
-    ctx.fillText('CC', 0, 31.25);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'ideographic';
+      ctx.fillText('CC', 0, 31.25);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html
index 3072264b..911da8b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'middle';
-    ctx.fillText('CC', 0, 25);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'middle';
+      ctx.fillText('CC', 0, 25);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js
index a0509b6..eeb32ea 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'middle';
-    ctx.fillText('CC', 0, 25);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'middle';
+      ctx.fillText('CC', 0, 25);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.html
index a077aff..56b5bb7d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'top';
-    ctx.fillText('CC', 0, 0);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'top';
+      ctx.fillText('CC', 0, 0);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js
index bbc7fc06..d4341c69 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textBaseline = 'top';
-    ctx.fillText('CC', 0, 0);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textBaseline = 'top';
+      ctx.fillText('CC', 0, 0);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.html
index 5c364f5..af1cb9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.strokeStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('PASS', 5, 35);
-t.done();
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.strokeStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('PASS', 5, 35);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.worker.js
index b75be089..ef00236 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.basic-manual.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.strokeStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('PASS', 5, 35);
-t.done();
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.strokeStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('PASS', 5, 35);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.html
index 4bef0e3..8f22b9f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
-_assertGreen(ctx, 100, 50);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.worker.js
index 32a673f..fd1dff13 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.NaN.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
-_assertGreen(ctx, 100, 50);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html
index 63b3096..ae21607 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('DD', 0, 37.5, 100);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('DD', 0, 37.5, 100);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js
index 092289b..240bffe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('DD', 0, 37.5, 100);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('DD', 0, 37.5, 100);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html
index 9294bf9..259fdc7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#0f0';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#f00';
-    ctx.fillText('EEEE', -50, 37.5, 40);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#0f0';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#f00';
+      ctx.fillText('EEEE', -50, 37.5, 40);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js
index 99cc25e..7aa3f47 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#0f0';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#f00';
-    ctx.fillText('EEEE', -50, 37.5, 40);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#0f0';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#f00';
+      ctx.fillText('EEEE', -50, 37.5, 40);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.html
index 838b3f8..7a0cf11b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('PASS', 5, 35, 200);
-t.done();
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('PASS', 5, 35, 200);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.worker.js
index e124b08e..3e200e8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('PASS', 5, 35, 200);
-t.done();
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('PASS', 5, 35, 200);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.html
index 9d06556..4411fbf 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, -1);
-_assertGreen(ctx, 100, 50);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, -1);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.worker.js
index bf852bc5..50076b5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.negative.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, -1);
-_assertGreen(ctx, 100, 50);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, -1);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.html
index 37c137e..94988fc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', -100, 35, 90);
-_assertGreen(ctx, 100, 50);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', -100, 35, 90);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.worker.js
index 44cf210..5d5ef4e3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.small.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', -100, 35, 90);
-_assertGreen(ctx, 100, 50);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', -100, 35, 90);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html
index c5bec91..0056d75 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html
@@ -18,16 +18,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, 0);
-_assertGreen(ctx, 100, 50);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, 0);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js
index 6701f5b..65e67cc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js
@@ -14,16 +14,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('fail fail fail fail fail', 5, 35, 0);
-_assertGreen(ctx, 100, 50);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('fail fail fail fail fail', 5, 35, 0);
+  _assertGreen(ctx, 100, 50);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.html
index 7363d73..98e329b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.strokeStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
-t.done();
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.strokeStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.worker.js
index f52a0cc..ee24a04 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.rtl-manual.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#0f0';
-ctx.strokeStyle = '#f00';
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
-t.done();
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.strokeStyle = '#f00';
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.html
index e620ae1a..7124c6e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.moveTo(0, 0);
-ctx.lineTo(100, 0);
+  ctx.moveTo(0, 0);
+  ctx.lineTo(100, 0);
 
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('FAIL', 5, 35);
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('FAIL', 5, 35);
 
-ctx.lineTo(100, 50);
-ctx.lineTo(0, 50);
-ctx.fillStyle = '#0f0';
-ctx.fill();
+  ctx.lineTo(100, 50);
+  ctx.lineTo(0, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 5,45, 0,255,0,255);
-t.done();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 5,45, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.worker.js
index 9640bad6..0e25028 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.unaffected.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.moveTo(0, 0);
-ctx.lineTo(100, 0);
+  ctx.moveTo(0, 0);
+  ctx.lineTo(100, 0);
 
-ctx.font = '35px Arial, sans-serif';
-ctx.fillText('FAIL', 5, 35);
+  ctx.font = '35px Arial, sans-serif';
+  ctx.fillText('FAIL', 5, 35);
 
-ctx.lineTo(100, 50);
-ctx.lineTo(0, 50);
-ctx.fillStyle = '#0f0';
-ctx.fill();
+  ctx.lineTo(100, 50);
+  ctx.lineTo(0, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 5,45, 0,255,0,255);
-t.done();
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 5,45, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.html
index d2c65e8..f8d9085 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '67px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '67px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html
index f390700e..da552d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html
@@ -17,24 +17,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '67px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '67px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js
index 8efab41..3bfb0be 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '67px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '67px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html
index 3766ab6..3a14462b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.font = '67px CanvasTest';
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.font = '67px CanvasTest';
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js
index 756e8447..f2210a3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.font = '67px CanvasTest';
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.font = '67px CanvasTest';
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js
index 45f1831..1c7e727 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js
@@ -13,24 +13,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '67px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('AA', 0, 50);
-    _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '67px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('AA', 0, 50);
+      _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.html
index e8ee39c6..de456a2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.strokeStyle = '#0f0';
-ctx.lineWidth = 3;
-ctx.font = '20px Arial, sans-serif';
-ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
-ctx.fillText('ToToToToToToTo', -50, 45);
-ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
-ctx.strokeText('ToToToToToToTo', -50, 45);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.strokeStyle = '#0f0';
+  ctx.lineWidth = 3;
+  ctx.font = '20px Arial, sans-serif';
+  ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
+  ctx.fillText('ToToToToToToTo', -50, 45);
+  ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
+  ctx.strokeText('ToToToToToToTo', -50, 45);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.worker.js
index 464cab3e..0d1c947 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.kern.consistent-manual.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = '#f00';
-ctx.strokeStyle = '#0f0';
-ctx.lineWidth = 3;
-ctx.font = '20px Arial, sans-serif';
-ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
-ctx.fillText('ToToToToToToTo', -50, 45);
-ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
-ctx.strokeText('ToToToToToToTo', -50, 45);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.strokeStyle = '#0f0';
+  ctx.lineWidth = 3;
+  ctx.font = '20px Arial, sans-serif';
+  ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
+  ctx.fillText('ToToToToToToTo', -50, 45);
+  ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
+  ctx.strokeText('ToToToToToToTo', -50, 45);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.html
index 4bc03bb..fa2fa86 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E EE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E EE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js
index 39c00846..75cacf9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E EE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E EE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html
index 58fb292..9215203 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'right';
-    ctx.fillText('EE ', 100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'right';
+      ctx.fillText('EE ', 100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js
index 81f85baf..f910b274 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.textAlign = 'right';
-    ctx.fillText('EE ', 100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.textAlign = 'right';
+      ctx.fillText('EE ', 100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html
index f018dc14..18289e51 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E\x0b EE', -150, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E\x0b EE', -150, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js
index cbc9803..2aa7f67a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E\x0b EE', -150, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E\x0b EE', -150, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html
index 0a6bb09..a0cc560 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dEE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dEE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js
index e13b87a5..12edf7f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dEE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dEE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html
index 3308cc7..240ba746 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E  EE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E  EE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js
index 4ea78a2..3ce5ef88 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText('E  EE', -100, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText('E  EE', -100, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html
index 94b3f9f..43fa32f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText(' EE', 0, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText(' EE', 0, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js
index 20bd10a..2f742ac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.fillStyle = '#f00';
-    ctx.fillRect(0, 0, 100, 50);
-    ctx.fillStyle = '#0f0';
-    ctx.fillText(' EE', 0, 37.5);
-    _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
-    _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-  }).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.fillStyle = '#f00';
+      ctx.fillRect(0, 0, 100, 50);
+      ctx.fillStyle = '#0f0';
+      ctx.fillText(' EE', 0, 37.5);
+      _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+      _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+    }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.html
index 5aee6afc..62ac888 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#0f0';
-ctx.fillStyle = '#f00';
-ctx.lineWidth = 1;
-ctx.font = '35px Arial, sans-serif';
-ctx.strokeText('PASS', 5, 35);
-t.done();
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#0f0';
+  ctx.fillStyle = '#f00';
+  ctx.lineWidth = 1;
+  ctx.font = '35px Arial, sans-serif';
+  ctx.strokeText('PASS', 5, 35);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.worker.js
index 8806e011..33d6e324 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.basic-manual.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#000';
-ctx.fillRect(0, 0, 100, 50);
-ctx.strokeStyle = '#0f0';
-ctx.fillStyle = '#f00';
-ctx.lineWidth = 1;
-ctx.font = '35px Arial, sans-serif';
-ctx.strokeText('PASS', 5, 35);
-t.done();
-
+  ctx.fillStyle = '#000';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.strokeStyle = '#0f0';
+  ctx.fillStyle = '#f00';
+  ctx.lineWidth = 1;
+  ctx.font = '35px Arial, sans-serif';
+  ctx.strokeText('PASS', 5, 35);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.html
index 7cad996c..76afc1b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.html
@@ -17,27 +17,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.moveTo(0, 0);
-ctx.lineTo(100, 0);
+  ctx.moveTo(0, 0);
+  ctx.lineTo(100, 0);
 
-ctx.font = '35px Arial, sans-serif';
-ctx.strokeStyle = '#f00';
-ctx.strokeText('FAIL', 5, 35);
+  ctx.font = '35px Arial, sans-serif';
+  ctx.strokeStyle = '#f00';
+  ctx.strokeText('FAIL', 5, 35);
 
-ctx.lineTo(100, 50);
-ctx.lineTo(0, 50);
-ctx.fillStyle = '#0f0';
-ctx.fill();
+  ctx.lineTo(100, 50);
+  ctx.lineTo(0, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 5,45, 0,255,0,255);
-t.done();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 5,45, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.worker.js
index 7ce3b1a..15c3b617 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.draw.stroke.unaffected.worker.js
@@ -13,27 +13,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
 
-ctx.moveTo(0, 0);
-ctx.lineTo(100, 0);
+  ctx.moveTo(0, 0);
+  ctx.lineTo(100, 0);
 
-ctx.font = '35px Arial, sans-serif';
-ctx.strokeStyle = '#f00';
-ctx.strokeText('FAIL', 5, 35);
+  ctx.font = '35px Arial, sans-serif';
+  ctx.strokeStyle = '#f00';
+  ctx.strokeText('FAIL', 5, 35);
 
-ctx.lineTo(100, 50);
-ctx.lineTo(0, 50);
-ctx.fillStyle = '#0f0';
-ctx.fill();
+  ctx.lineTo(100, 50);
+  ctx.lineTo(0, 50);
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
 
-_assertPixel(canvas, 50,25, 0,255,0,255);
-_assertPixel(canvas, 5,45, 0,255,0,255);
-t.done();
-
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  _assertPixel(canvas, 5,45, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.html
index 30e12f31..23f3535 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
-ctx.fontKerning = "normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-width_normal = ctx.measureText("TAWATAVA").width;
-ctx.fontKerning = "none";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-width_none = ctx.measureText("TAWATAVA").width;
-_assert(width_normal < width_none, "width_normal < width_none");
-t.done();
+  _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
+  ctx.fontKerning = "normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  width_normal = ctx.measureText("TAWATAVA").width;
+  ctx.fontKerning = "none";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  width_none = ctx.measureText("TAWATAVA").width;
+  _assert(width_normal < width_none, "width_normal < width_none");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.html
index a9a5ae2..380d8e7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.html
@@ -17,40 +17,40 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
-ctx.fontKerning = "Normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "noRmal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "NoRMal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "NORMAL";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
+  ctx.fontKerning = "Normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "noRmal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "NoRMal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "NORMAL";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
 
-ctx.fontKerning = "None";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "none";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "nOne";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "nonE";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "NONE";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-t.done();
+  ctx.fontKerning = "None";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "none";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "nOne";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "nonE";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "NONE";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.worker.js
index a883737..afce6c3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.worker.js
@@ -13,40 +13,39 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
-ctx.fontKerning = "Normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "noRmal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "NoRMal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "NORMAL";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
+  ctx.fontKerning = "Normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "noRmal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "NoRMal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "NORMAL";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
 
-ctx.fontKerning = "None";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "none";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "nOne";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "nonE";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-ctx.fontKerning = "auto";
-ctx.fontKerning = "NONE";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-t.done();
-
+  ctx.fontKerning = "None";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "none";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "nOne";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "nonE";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  ctx.fontKerning = "auto";
+  ctx.fontKerning = "NONE";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.worker.js
index 9478eece..ec64214 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
-ctx.fontKerning = "normal";
-_assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
-width_normal = ctx.measureText("TAWATAVA").width;
-ctx.fontKerning = "none";
-_assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
-width_none = ctx.measureText("TAWATAVA").width;
-_assert(width_normal < width_none, "width_normal < width_none");
-t.done();
-
+  _assertSame(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"");
+  ctx.fontKerning = "normal";
+  _assertSame(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"");
+  width_normal = ctx.measureText("TAWATAVA").width;
+  ctx.fontKerning = "none";
+  _assertSame(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"");
+  width_none = ctx.measureText("TAWATAVA").width;
+  _assert(width_normal < width_none, "width_normal < width_none");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.html
index 08c48f1b..5ed17ba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.html
@@ -17,59 +17,59 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Setting fontVariantCaps with lower cases
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  // Setting fontVariantCaps with lower cases
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "normal";
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  ctx.fontVariantCaps = "normal";
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "small-caps";
-_assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
+  ctx.fontVariantCaps = "small-caps";
+  _assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
 
-ctx.fontVariantCaps = "all-small-caps";
-_assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
+  ctx.fontVariantCaps = "all-small-caps";
+  _assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
 
-ctx.fontVariantCaps = "petite-caps";
-_assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
+  ctx.fontVariantCaps = "petite-caps";
+  _assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
 
-ctx.fontVariantCaps = "all-petite-caps";
-_assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
+  ctx.fontVariantCaps = "all-petite-caps";
+  _assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
 
-ctx.fontVariantCaps = "unicase";
-_assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
+  ctx.fontVariantCaps = "unicase";
+  _assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
 
-ctx.fontVariantCaps = "titling-caps";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  ctx.fontVariantCaps = "titling-caps";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
-// Setting fontVariantCaps with lower cases and upper cases word.
-ctx.fontVariantCaps = "nORmal";
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  // Setting fontVariantCaps with lower cases and upper cases word.
+  ctx.fontVariantCaps = "nORmal";
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "smaLL-caps";
-_assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
+  ctx.fontVariantCaps = "smaLL-caps";
+  _assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
 
-ctx.fontVariantCaps = "all-small-CAPS";
-_assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
+  ctx.fontVariantCaps = "all-small-CAPS";
+  _assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
 
-ctx.fontVariantCaps = "pEtitE-caps";
-_assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
+  ctx.fontVariantCaps = "pEtitE-caps";
+  _assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
 
-ctx.fontVariantCaps = "All-Petite-Caps";
-_assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
+  ctx.fontVariantCaps = "All-Petite-Caps";
+  _assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
 
-ctx.fontVariantCaps = "uNIcase";
-_assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
+  ctx.fontVariantCaps = "uNIcase";
+  _assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
 
-ctx.fontVariantCaps = "titling-CAPS";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  ctx.fontVariantCaps = "titling-CAPS";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
-// Setting fontVariantCaps with non-existing font variant.
-ctx.fontVariantCaps = "abcd";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
-t.done();
+  // Setting fontVariantCaps with non-existing font variant.
+  ctx.fontVariantCaps = "abcd";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.worker.js
index d4e9307..9486b8a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.worker.js
@@ -13,59 +13,58 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Setting fontVariantCaps with lower cases
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  // Setting fontVariantCaps with lower cases
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "normal";
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  ctx.fontVariantCaps = "normal";
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "small-caps";
-_assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
+  ctx.fontVariantCaps = "small-caps";
+  _assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
 
-ctx.fontVariantCaps = "all-small-caps";
-_assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
+  ctx.fontVariantCaps = "all-small-caps";
+  _assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
 
-ctx.fontVariantCaps = "petite-caps";
-_assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
+  ctx.fontVariantCaps = "petite-caps";
+  _assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
 
-ctx.fontVariantCaps = "all-petite-caps";
-_assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
+  ctx.fontVariantCaps = "all-petite-caps";
+  _assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
 
-ctx.fontVariantCaps = "unicase";
-_assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
+  ctx.fontVariantCaps = "unicase";
+  _assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
 
-ctx.fontVariantCaps = "titling-caps";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  ctx.fontVariantCaps = "titling-caps";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
-// Setting fontVariantCaps with lower cases and upper cases word.
-ctx.fontVariantCaps = "nORmal";
-_assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
+  // Setting fontVariantCaps with lower cases and upper cases word.
+  ctx.fontVariantCaps = "nORmal";
+  _assertSame(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"");
 
-ctx.fontVariantCaps = "smaLL-caps";
-_assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
+  ctx.fontVariantCaps = "smaLL-caps";
+  _assertSame(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"");
 
-ctx.fontVariantCaps = "all-small-CAPS";
-_assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
+  ctx.fontVariantCaps = "all-small-CAPS";
+  _assertSame(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"");
 
-ctx.fontVariantCaps = "pEtitE-caps";
-_assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
+  ctx.fontVariantCaps = "pEtitE-caps";
+  _assertSame(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"");
 
-ctx.fontVariantCaps = "All-Petite-Caps";
-_assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
+  ctx.fontVariantCaps = "All-Petite-Caps";
+  _assertSame(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"");
 
-ctx.fontVariantCaps = "uNIcase";
-_assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
+  ctx.fontVariantCaps = "uNIcase";
+  _assertSame(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"");
 
-ctx.fontVariantCaps = "titling-CAPS";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  ctx.fontVariantCaps = "titling-CAPS";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
 
-// Setting fontVariantCaps with non-existing font variant.
-ctx.fontVariantCaps = "abcd";
-_assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
-t.done();
-
+  // Setting fontVariantCaps with non-existing font variant.
+  ctx.fontVariantCaps = "abcd";
+  _assertSame(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html
index 5030055..3a993522 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html
@@ -17,28 +17,28 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-
-function test_word_spacing(value) {
-  ctx.wordSpacing = value;
-  ctx.letterSpacing = value;
-  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-}
-test_word_spacing('0s');
-test_word_spacing('1min');
-test_word_spacing('1deg');
-test_word_spacing('1pp');
-test_word_spacing('initial');
-test_word_spacing('inherit');
-test_word_spacing('normal');
-test_word_spacing('none');
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-t.done();
+  function test_word_spacing(value) {
+    ctx.wordSpacing = value;
+    ctx.letterSpacing = value;
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  }
+  test_word_spacing('0s');
+  test_word_spacing('1min');
+  test_word_spacing('1deg');
+  test_word_spacing('1pp');
+  test_word_spacing('initial');
+  test_word_spacing('inherit');
+  test_word_spacing('normal');
+  test_word_spacing('none');
+
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js
index e4b090cc..2718585 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js
@@ -13,28 +13,27 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-
-function test_word_spacing(value) {
-  ctx.wordSpacing = value;
-  ctx.letterSpacing = value;
-  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-}
-test_word_spacing('0s');
-test_word_spacing('1min');
-test_word_spacing('1deg');
-test_word_spacing('1pp');
-test_word_spacing('initial');
-test_word_spacing('inherit');
-test_word_spacing('normal');
-test_word_spacing('none');
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-t.done();
+  function test_word_spacing(value) {
+    ctx.wordSpacing = value;
+    ctx.letterSpacing = value;
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  }
+  test_word_spacing('0s');
+  test_word_spacing('1min');
+  test_word_spacing('1deg');
+  test_word_spacing('1pp');
+  test_word_spacing('initial');
+  test_word_spacing('inherit');
+  test_word_spacing('normal');
+  test_word_spacing('none');
 
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.html
index ff84f45..636f719 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.html
@@ -17,30 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-// Get the width for 'Hello World' at default size, 10px.
-var width_normal = ctx.measureText('Hello World').width;
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  // Get the width for 'Hello World' at default size, 10px.
+  var width_normal = ctx.measureText('Hello World').width;
 
-ctx.letterSpacing = '1em';
-_assertSame(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'");
-// 1em = 10px. Add 10px after each letter in "Hello World",
-// makes it 110px longer.
-var width_with_spacing = ctx.measureText('Hello World').width;
-_assertSame(width_with_spacing, width_normal + 110, "width_with_spacing", "width_normal + 110");
+  ctx.letterSpacing = '1em';
+  _assertSame(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'");
+  // 1em = 10px. Add 10px after each letter in "Hello World",
+  // makes it 110px longer.
+  var width_with_spacing = ctx.measureText('Hello World').width;
+  _assertSame(width_with_spacing, width_normal + 110, "width_with_spacing", "width_normal + 110");
 
-// Changing font to 20px. Without resetting the spacing, 1em letterSpacing
-// is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
-ctx.font = '20px serif';
-width_with_spacing = ctx.measureText('Hello World').width;
-// Now calculate the reference spacing for "Hello World" with no spacing.
-ctx.letterSpacing = '0em';
-width_normal = ctx.measureText('Hello World').width;
-_assertSame(width_with_spacing, width_normal + 220, "width_with_spacing", "width_normal + 220");
-t.done();
+  // Changing font to 20px. Without resetting the spacing, 1em letterSpacing
+  // is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
+  ctx.font = '20px serif';
+  width_with_spacing = ctx.measureText('Hello World').width;
+  // Now calculate the reference spacing for "Hello World" with no spacing.
+  ctx.letterSpacing = '0em';
+  width_normal = ctx.measureText('Hello World').width;
+  _assertSame(width_with_spacing, width_normal + 220, "width_with_spacing", "width_normal + 220");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.worker.js
index 5a6bf661..22fb04f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.change.font.worker.js
@@ -13,30 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-// Get the width for 'Hello World' at default size, 10px.
-var width_normal = ctx.measureText('Hello World').width;
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  // Get the width for 'Hello World' at default size, 10px.
+  var width_normal = ctx.measureText('Hello World').width;
 
-ctx.letterSpacing = '1em';
-_assertSame(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'");
-// 1em = 10px. Add 10px after each letter in "Hello World",
-// makes it 110px longer.
-var width_with_spacing = ctx.measureText('Hello World').width;
-_assertSame(width_with_spacing, width_normal + 110, "width_with_spacing", "width_normal + 110");
+  ctx.letterSpacing = '1em';
+  _assertSame(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'");
+  // 1em = 10px. Add 10px after each letter in "Hello World",
+  // makes it 110px longer.
+  var width_with_spacing = ctx.measureText('Hello World').width;
+  _assertSame(width_with_spacing, width_normal + 110, "width_with_spacing", "width_normal + 110");
 
-// Changing font to 20px. Without resetting the spacing, 1em letterSpacing
-// is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
-ctx.font = '20px serif';
-width_with_spacing = ctx.measureText('Hello World').width;
-// Now calculate the reference spacing for "Hello World" with no spacing.
-ctx.letterSpacing = '0em';
-width_normal = ctx.measureText('Hello World').width;
-_assertSame(width_with_spacing, width_normal + 220, "width_with_spacing", "width_normal + 220");
-t.done();
-
+  // Changing font to 20px. Without resetting the spacing, 1em letterSpacing
+  // is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
+  ctx.font = '20px serif';
+  width_with_spacing = ctx.measureText('Hello World').width;
+  // Now calculate the reference spacing for "Hello World" with no spacing.
+  ctx.letterSpacing = '0em';
+  width_normal = ctx.measureText('Hello World').width;
+  _assertSame(width_with_spacing, width_normal + 220, "width_with_spacing", "width_normal + 220");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html
index 5482c36..46cd55a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html
@@ -17,37 +17,37 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-var width_normal = ctx.measureText('Hello World').width;
-
-function test_letter_spacing(value, difference_spacing, epsilon) {
-  ctx.letterSpacing = value;
-  _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
   _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-  width_with_letter_spacing = ctx.measureText('Hello World').width;
-  assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
-}
+  var width_normal = ctx.measureText('Hello World').width;
 
-// The first value is the letter Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 11 letters
-// in 'hello world', so the length difference is always letterSpacing * 11.
-// and the third value is the acceptable differencee for the length change,
-// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
-test_cases = [['3px', 33, 0.1],
-              ['5px', 55, 0.1],
-              ['-2px', -22, 0.1],
-              ['1in', 1056, 0.1],
-              ['-0.1cm', -41.65, 0.2],
-              ['-0.6mm', -24,95, 0.2]]
+  function test_letter_spacing(value, difference_spacing, epsilon) {
+    ctx.letterSpacing = value;
+    _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    width_with_letter_spacing = ctx.measureText('Hello World').width;
+    assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_letter_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the letter Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 11 letters
+  // in 'hello world', so the length difference is always letterSpacing * 11.
+  // and the third value is the acceptable differencee for the length change,
+  // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
+  test_cases = [['3px', 33, 0.1],
+                ['5px', 55, 0.1],
+                ['-2px', -22, 0.1],
+                ['1in', 1056, 0.1],
+                ['-0.1cm', -41.65, 0.2],
+                ['-0.6mm', -24,95, 0.2]]
+
+  for (const test_case of test_cases) {
+    test_letter_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js
index 22cab4ccc..8c82aeb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js
@@ -13,37 +13,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-var width_normal = ctx.measureText('Hello World').width;
-
-function test_letter_spacing(value, difference_spacing, epsilon) {
-  ctx.letterSpacing = value;
-  _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
   _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-  width_with_letter_spacing = ctx.measureText('Hello World').width;
-  assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
-}
+  var width_normal = ctx.measureText('Hello World').width;
 
-// The first value is the letter Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 11 letters
-// in 'hello world', so the length difference is always letterSpacing * 11.
-// and the third value is the acceptable differencee for the length change,
-// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
-test_cases = [['3px', 33, 0.1],
-              ['5px', 55, 0.1],
-              ['-2px', -22, 0.1],
-              ['1in', 1056, 0.1],
-              ['-0.1cm', -41.65, 0.2],
-              ['-0.6mm', -24,95, 0.2]]
+  function test_letter_spacing(value, difference_spacing, epsilon) {
+    ctx.letterSpacing = value;
+    _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    width_with_letter_spacing = ctx.measureText('Hello World').width;
+    assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_letter_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the letter Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 11 letters
+  // in 'hello world', so the length difference is always letterSpacing * 11.
+  // and the third value is the acceptable differencee for the length change,
+  // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
+  test_cases = [['3px', 33, 0.1],
+                ['5px', 55, 0.1],
+                ['-2px', -22, 0.1],
+                ['1in', 1056, 0.1],
+                ['-0.1cm', -41.65, 0.2],
+                ['-0.6mm', -24,95, 0.2]]
 
+  for (const test_case of test_cases) {
+    test_letter_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html
index fa5d2bc..296c929 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html
@@ -17,35 +17,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-ctx.font = "10px monospace";
-var width_normal = ctx.measureText('Hello World').width;
-var ch_width = width_normal / 11;
-
-function test_letter_spacing(value, difference_spacing, epsilon) {
-  ctx.letterSpacing = value;
-  _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
   _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-  width_with_letter_spacing = ctx.measureText('Hello World').width;
-  assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
-}
+  ctx.font = "10px monospace";
+  var width_normal = ctx.measureText('Hello World').width;
+  var ch_width = width_normal / 11;
 
-// The first value is the letter Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 11 letters
-// in 'hello world', so the length difference is always letterSpacing * 11.
-// and the third value is the acceptable differencee for the length change.
-test_cases = [['1em', 110, 0.1],
-              ['-0.1em', -11, 0.1],
-              ['1ch', 11 * ch_width, 0.1]]
+  function test_letter_spacing(value, difference_spacing, epsilon) {
+    ctx.letterSpacing = value;
+    _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    width_with_letter_spacing = ctx.measureText('Hello World').width;
+    assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_letter_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the letter Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 11 letters
+  // in 'hello world', so the length difference is always letterSpacing * 11.
+  // and the third value is the acceptable differencee for the length change.
+  test_cases = [['1em', 110, 0.1],
+                ['-0.1em', -11, 0.1],
+                ['1ch', 11 * ch_width, 0.1]]
+
+  for (const test_case of test_cases) {
+    test_letter_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js
index 59d17ef..d6afa71aba 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js
@@ -13,35 +13,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-ctx.font = "10px monospace";
-var width_normal = ctx.measureText('Hello World').width;
-var ch_width = width_normal / 11;
-
-function test_letter_spacing(value, difference_spacing, epsilon) {
-  ctx.letterSpacing = value;
-  _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
   _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-  width_with_letter_spacing = ctx.measureText('Hello World').width;
-  assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
-}
+  ctx.font = "10px monospace";
+  var width_normal = ctx.measureText('Hello World').width;
+  var ch_width = width_normal / 11;
 
-// The first value is the letter Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 11 letters
-// in 'hello world', so the length difference is always letterSpacing * 11.
-// and the third value is the acceptable differencee for the length change.
-test_cases = [['1em', 110, 0.1],
-              ['-0.1em', -11, 0.1],
-              ['1ch', 11 * ch_width, 0.1]]
+  function test_letter_spacing(value, difference_spacing, epsilon) {
+    ctx.letterSpacing = value;
+    _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    width_with_letter_spacing = ctx.measureText('Hello World').width;
+    assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_letter_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the letter Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 11 letters
+  // in 'hello world', so the length difference is always letterSpacing * 11.
+  // and the third value is the acceptable differencee for the length change.
+  test_cases = [['1em', 110, 0.1],
+                ['-0.1em', -11, 0.1],
+                ['1ch', 11 * ch_width, 0.1]]
 
+  for (const test_case of test_cases) {
+    test_letter_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.html
index 04774a9..6c0b3756 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.direction = "ltr";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  ctx.direction = "ltr";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
-ctx.direction = "rtl";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
-t.done();
+  ctx.direction = "rtl";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.worker.js
index 8f558568..852f372 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.direction.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.direction = "ltr";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  ctx.direction = "ltr";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
-ctx.direction = "rtl";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
-t.done();
-
+  ctx.direction = "rtl";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.html
index 7eba6766..335014c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
-t.done();
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.worker.js
index 585e6c0..09b0e9b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.rtl.text.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
 
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
-t.done();
-
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.html
index f784f56..4c1ca19 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textAlign = "right";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
+  ctx.textAlign = "right";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
 
-ctx.textAlign = "left"
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
-t.done();
+  ctx.textAlign = "left"
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.worker.js
index 3af2f47..bc6f167b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.measure.textAlign.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.textAlign = "right";
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
+  ctx.textAlign = "right";
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight");
 
-ctx.textAlign = "left"
-metrics = ctx.measureText('hello');
-_assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
-t.done();
-
+  ctx.textAlign = "left"
+  metrics = ctx.measureText('hello');
+  _assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html
index 8e80f9a..ca50f13 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-
-function test_word_spacing(value) {
-  ctx.wordSpacing = value;
-  ctx.letterSpacing = value;
-  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-}
-test_word_spacing(NaN);
-test_word_spacing(Infinity);
-test_word_spacing(-Infinity);
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-t.done();
+  function test_word_spacing(value) {
+    ctx.wordSpacing = value;
+    ctx.letterSpacing = value;
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  }
+  test_word_spacing(NaN);
+  test_word_spacing(Infinity);
+  test_word_spacing(-Infinity);
+
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js
index adba253..801b8b5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-
-function test_word_spacing(value) {
-  ctx.wordSpacing = value;
-  ctx.letterSpacing = value;
-  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-}
-test_word_spacing(NaN);
-test_word_spacing(Infinity);
-test_word_spacing(-Infinity);
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-t.done();
+  function test_word_spacing(value) {
+    ctx.wordSpacing = value;
+    ctx.letterSpacing = value;
+    _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  }
+  test_word_spacing(NaN);
+  test_word_spacing(Infinity);
+  test_word_spacing(-Infinity);
 
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html
index ea480c46..aa2e7caa 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html
@@ -17,30 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-ctx.letterSpacing = '3px';
-_assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  ctx.letterSpacing = '3px';
+  _assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-ctx.wordSpacing = '5px';
-_assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
-_assertSame(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'");
+  ctx.wordSpacing = '5px';
+  _assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
+  _assertSame(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'");
 
-ctx.letterSpacing = '-1px';
-ctx.wordSpacing = '-1px';
-_assertSame(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'");
-_assertSame(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'");
+  ctx.letterSpacing = '-1px';
+  ctx.wordSpacing = '-1px';
+  _assertSame(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'");
+  _assertSame(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'");
 
-ctx.letterSpacing = '1PX';
-ctx.wordSpacing = '1EM';
-_assertSame(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'");
-_assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
-t.done();
+  ctx.letterSpacing = '1PX';
+  ctx.wordSpacing = '1EM';
+  _assertSame(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'");
+  _assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js
index a413f92..938ab966 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.js
@@ -13,30 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-ctx.letterSpacing = '3px';
-_assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  ctx.letterSpacing = '3px';
+  _assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
 
-ctx.wordSpacing = '5px';
-_assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
-_assertSame(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'");
+  ctx.wordSpacing = '5px';
+  _assertSame(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'");
+  _assertSame(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'");
 
-ctx.letterSpacing = '-1px';
-ctx.wordSpacing = '-1px';
-_assertSame(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'");
-_assertSame(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'");
+  ctx.letterSpacing = '-1px';
+  ctx.wordSpacing = '-1px';
+  _assertSame(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'");
+  _assertSame(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'");
 
-ctx.letterSpacing = '1PX';
-ctx.wordSpacing = '1EM';
-_assertSame(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'");
-_assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
-t.done();
-
+  ctx.letterSpacing = '1PX';
+  ctx.wordSpacing = '1EM';
+  _assertSame(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'");
+  _assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html
index d0c7b88..47094dc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html
@@ -17,41 +17,41 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Setting textRendering with lower cases
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  // Setting textRendering with lower cases
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "auto";
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  ctx.textRendering = "auto";
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "optimizespeed";
-_assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
+  ctx.textRendering = "optimizespeed";
+  _assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
 
-ctx.textRendering = "optimizelegibility";
-_assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
+  ctx.textRendering = "optimizelegibility";
+  _assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
 
-ctx.textRendering = "geometricprecision";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  ctx.textRendering = "geometricprecision";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
-// Setting textRendering with lower cases and upper cases word.
-ctx.textRendering = "aUto";
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  // Setting textRendering with lower cases and upper cases word.
+  ctx.textRendering = "aUto";
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "OPtimizeSpeed";
-_assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
+  ctx.textRendering = "OPtimizeSpeed";
+  _assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
 
-ctx.textRendering = "OPtimizELEgibility";
-_assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
+  ctx.textRendering = "OPtimizELEgibility";
+  _assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
 
-ctx.textRendering = "GeometricPrecision";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  ctx.textRendering = "GeometricPrecision";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
-// Setting textRendering with non-existing font variant.
-ctx.textRendering = "abcd";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
-t.done();
+  // Setting textRendering with non-existing font variant.
+  ctx.textRendering = "abcd";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js
index e8402c2..ca5741de 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js
@@ -13,41 +13,40 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Setting textRendering with lower cases
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  // Setting textRendering with lower cases
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "auto";
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  ctx.textRendering = "auto";
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "optimizespeed";
-_assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
+  ctx.textRendering = "optimizespeed";
+  _assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
 
-ctx.textRendering = "optimizelegibility";
-_assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
+  ctx.textRendering = "optimizelegibility";
+  _assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
 
-ctx.textRendering = "geometricprecision";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  ctx.textRendering = "geometricprecision";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
-// Setting textRendering with lower cases and upper cases word.
-ctx.textRendering = "aUto";
-_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
+  // Setting textRendering with lower cases and upper cases word.
+  ctx.textRendering = "aUto";
+  _assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
 
-ctx.textRendering = "OPtimizeSpeed";
-_assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
+  ctx.textRendering = "OPtimizeSpeed";
+  _assertSame(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"");
 
-ctx.textRendering = "OPtimizELEgibility";
-_assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
+  ctx.textRendering = "OPtimizELEgibility";
+  _assertSame(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"");
 
-ctx.textRendering = "GeometricPrecision";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  ctx.textRendering = "GeometricPrecision";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
 
-// Setting textRendering with non-existing font variant.
-ctx.textRendering = "abcd";
-_assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
-t.done();
-
+  // Setting textRendering with non-existing font variant.
+  ctx.textRendering = "abcd";
+  _assertSame(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.html
index f8b72fbf..3df660e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.html
@@ -17,30 +17,30 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-// Get the width for 'Hello World, again' at default size, 10px.
-var width_normal = ctx.measureText('Hello World, again').width;
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  // Get the width for 'Hello World, again' at default size, 10px.
+  var width_normal = ctx.measureText('Hello World, again').width;
 
-ctx.wordSpacing = '1em';
-_assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
-// 1em = 10px. Add 10px after each word in "Hello World, again",
-// makes it 20px longer.
-var width_with_spacing = ctx.measureText('Hello World, again').width;
-_assertSame(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20");
+  ctx.wordSpacing = '1em';
+  _assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
+  // 1em = 10px. Add 10px after each word in "Hello World, again",
+  // makes it 20px longer.
+  var width_with_spacing = ctx.measureText('Hello World, again').width;
+  _assertSame(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20");
 
-// Changing font to 20px. Without resetting the spacing, 1em wordSpacing
-// is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
-ctx.font = '20px serif';
-width_with_spacing = ctx.measureText('Hello World, again').width;
-// Now calculate the reference spacing for "Hello World, again" with no spacing.
-ctx.wordSpacing = '0em';
-width_normal = ctx.measureText('Hello World, again').width;
-_assertSame(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40");
-t.done();
+  // Changing font to 20px. Without resetting the spacing, 1em wordSpacing
+  // is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
+  ctx.font = '20px serif';
+  width_with_spacing = ctx.measureText('Hello World, again').width;
+  // Now calculate the reference spacing for "Hello World, again" with no spacing.
+  ctx.wordSpacing = '0em';
+  width_normal = ctx.measureText('Hello World, again').width;
+  _assertSame(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.worker.js
index 993cd28..e1415ea 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.change.font.worker.js
@@ -13,30 +13,29 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-// Get the width for 'Hello World, again' at default size, 10px.
-var width_normal = ctx.measureText('Hello World, again').width;
+  _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  // Get the width for 'Hello World, again' at default size, 10px.
+  var width_normal = ctx.measureText('Hello World, again').width;
 
-ctx.wordSpacing = '1em';
-_assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
-// 1em = 10px. Add 10px after each word in "Hello World, again",
-// makes it 20px longer.
-var width_with_spacing = ctx.measureText('Hello World, again').width;
-_assertSame(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20");
+  ctx.wordSpacing = '1em';
+  _assertSame(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'");
+  // 1em = 10px. Add 10px after each word in "Hello World, again",
+  // makes it 20px longer.
+  var width_with_spacing = ctx.measureText('Hello World, again').width;
+  _assertSame(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20");
 
-// Changing font to 20px. Without resetting the spacing, 1em wordSpacing
-// is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
-ctx.font = '20px serif';
-width_with_spacing = ctx.measureText('Hello World, again').width;
-// Now calculate the reference spacing for "Hello World, again" with no spacing.
-ctx.wordSpacing = '0em';
-width_normal = ctx.measureText('Hello World, again').width;
-_assertSame(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40");
-t.done();
-
+  // Changing font to 20px. Without resetting the spacing, 1em wordSpacing
+  // is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
+  ctx.font = '20px serif';
+  width_with_spacing = ctx.measureText('Hello World, again').width;
+  // Now calculate the reference spacing for "Hello World, again" with no spacing.
+  ctx.wordSpacing = '0em';
+  width_normal = ctx.measureText('Hello World, again').width;
+  _assertSame(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html
index 07ca896..458f12b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html
@@ -17,37 +17,37 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-var width_normal = ctx.measureText('Hello World, again').width;
-
-function test_word_spacing(value, difference_spacing, epsilon) {
-  ctx.wordSpacing = value;
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-  _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
-  width_with_word_spacing = ctx.measureText('Hello World, again').width;
-  assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
-}
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  var width_normal = ctx.measureText('Hello World, again').width;
 
-// The first value is the word Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 2 words
-// in 'Hello World, again', so the length difference is always wordSpacing * 2.
-// and the third value is the acceptable differencee for the length change,
-// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
-test_cases = [['3px', 6, 0.1],
-              ['5px', 10, 0.1],
-              ['-2px', -4, 0.1],
-              ['1in', 192, 0.1],
-              ['-0.1cm', -7.57, 0.2],
-              ['-0.6mm', -4.54, 0.2]]
+  function test_word_spacing(value, difference_spacing, epsilon) {
+    ctx.wordSpacing = value;
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+    _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
+    width_with_word_spacing = ctx.measureText('Hello World, again').width;
+    assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_word_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the word Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 2 words
+  // in 'Hello World, again', so the length difference is always wordSpacing * 2.
+  // and the third value is the acceptable differencee for the length change,
+  // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
+  test_cases = [['3px', 6, 0.1],
+                ['5px', 10, 0.1],
+                ['-2px', -4, 0.1],
+                ['1in', 192, 0.1],
+                ['-0.1cm', -7.57, 0.2],
+                ['-0.6mm', -4.54, 0.2]]
+
+  for (const test_case of test_cases) {
+    test_word_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js
index ebfc056..36d1fef 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js
@@ -13,37 +13,36 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-var width_normal = ctx.measureText('Hello World, again').width;
-
-function test_word_spacing(value, difference_spacing, epsilon) {
-  ctx.wordSpacing = value;
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-  _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
-  width_with_word_spacing = ctx.measureText('Hello World, again').width;
-  assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
-}
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  var width_normal = ctx.measureText('Hello World, again').width;
 
-// The first value is the word Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 2 words
-// in 'Hello World, again', so the length difference is always wordSpacing * 2.
-// and the third value is the acceptable differencee for the length change,
-// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
-test_cases = [['3px', 6, 0.1],
-              ['5px', 10, 0.1],
-              ['-2px', -4, 0.1],
-              ['1in', 192, 0.1],
-              ['-0.1cm', -7.57, 0.2],
-              ['-0.6mm', -4.54, 0.2]]
+  function test_word_spacing(value, difference_spacing, epsilon) {
+    ctx.wordSpacing = value;
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+    _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
+    width_with_word_spacing = ctx.measureText('Hello World, again').width;
+    assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_word_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the word Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 2 words
+  // in 'Hello World, again', so the length difference is always wordSpacing * 2.
+  // and the third value is the acceptable differencee for the length change,
+  // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
+  test_cases = [['3px', 6, 0.1],
+                ['5px', 10, 0.1],
+                ['-2px', -4, 0.1],
+                ['1in', 192, 0.1],
+                ['-0.1cm', -7.57, 0.2],
+                ['-0.6mm', -4.54, 0.2]]
 
+  for (const test_case of test_cases) {
+    test_word_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html
index 95f87cb..11988ae 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html
@@ -17,35 +17,35 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-ctx.font = "10px monospace";
-var width_normal = ctx.measureText('Hello World, again').width;
-var ch_width = width_normal / 18;
-
-function test_word_spacing(value, difference_spacing, epsilon) {
-  ctx.wordSpacing = value;
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-  _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
-  width_with_word_spacing = ctx.measureText('Hello World, again').width;
-  assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
-}
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  ctx.font = "10px monospace";
+  var width_normal = ctx.measureText('Hello World, again').width;
+  var ch_width = width_normal / 18;
 
-// The first value is the word Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 2 words
-// in 'Hello World, again', so the length difference is always wordSpacing * 2.
-// and the third value is the acceptable differencee for the length change.
-test_cases = [['1em', 20, 0.1],
-              ['-0.5em', -10, 0.1],
-              ['1ch', 2 * ch_width, 0.1]]
+  function test_word_spacing(value, difference_spacing, epsilon) {
+    ctx.wordSpacing = value;
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+    _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
+    width_with_word_spacing = ctx.measureText('Hello World, again').width;
+    assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_word_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the word Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 2 words
+  // in 'Hello World, again', so the length difference is always wordSpacing * 2.
+  // and the third value is the acceptable differencee for the length change.
+  test_cases = [['1em', 20, 0.1],
+                ['-0.5em', -10, 0.1],
+                ['1ch', 2 * ch_width, 0.1]]
+
+  for (const test_case of test_cases) {
+    test_word_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js
index 2bded51e..f5295e9 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js
@@ -13,35 +13,34 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
-ctx.font = "10px monospace";
-var width_normal = ctx.measureText('Hello World, again').width;
-var ch_width = width_normal / 18;
-
-function test_word_spacing(value, difference_spacing, epsilon) {
-  ctx.wordSpacing = value;
   _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
-  _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
-  width_with_word_spacing = ctx.measureText('Hello World, again').width;
-  assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
-}
+  _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
+  ctx.font = "10px monospace";
+  var width_normal = ctx.measureText('Hello World, again').width;
+  var ch_width = width_normal / 18;
 
-// The first value is the word Spacing to be set, the second value the
-// change in length of string 'Hello World', note that there are 2 words
-// in 'Hello World, again', so the length difference is always wordSpacing * 2.
-// and the third value is the acceptable differencee for the length change.
-test_cases = [['1em', 20, 0.1],
-              ['-0.5em', -10, 0.1],
-              ['1ch', 2 * ch_width, 0.1]]
+  function test_word_spacing(value, difference_spacing, epsilon) {
+    ctx.wordSpacing = value;
+    _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
+    _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
+    width_with_word_spacing = ctx.measureText('Hello World, again').width;
+    assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
+  }
 
-for (const test_case of test_cases) {
-  test_word_spacing(test_case[0], test_case[1], test_case[2]);
-}
-t.done();
+  // The first value is the word Spacing to be set, the second value the
+  // change in length of string 'Hello World', note that there are 2 words
+  // in 'Hello World, again', so the length difference is always wordSpacing * 2.
+  // and the third value is the acceptable differencee for the length change.
+  test_cases = [['1em', 20, 0.1],
+                ['-0.5em', -10, 0.1],
+                ['1ch', 2 * ch_width, 0.1]]
 
+  for (const test_case of test_cases) {
+    test_word_spacing(test_case[0], test_case[1], test_case[2]);
+  }
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.html
index 191c1a5..59828a5d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
-t.done();
+  _assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.worker.js
index dc620ed..fa51ffc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.default.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
-t.done();
-
+  _assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.html
index aee5556..bb39cc4a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '20px serif';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20PX   SERIF';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
-t.done();
+  ctx.font = '20PX   SERIF';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.worker.js
index 0d8a4aa..3596aab 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.basic.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '20px serif';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20PX   SERIF';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
-t.done();
-
+  ctx.font = '20PX   SERIF';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.html
index 361b44d..30e93780 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
-_assertSame(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'");
-t.done();
+  ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
+  _assertSame(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.worker.js
index 3c05b6f..28cb41c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.complex.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
-_assertSame(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'");
-t.done();
-
+  ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
+  _assertSame(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.html
index 70127ba6..989014f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
-_assertSame(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'");
-t.done();
+  ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
+  _assertSame(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.worker.js
index 7640de2..68aefdd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.family.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
-_assertSame(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'");
-t.done();
-
+  ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
+  _assertSame(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.html
index 483476bc..8b4fd01 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.html
@@ -17,56 +17,56 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '20px serif';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'bogus';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'bogus';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'inherit';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'inherit';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px {bogus}';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px {bogus}';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px initial';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px initial';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px default';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px default';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px inherit';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px inherit';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px revert';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px revert';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'var(--x)';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'var(--x)';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'var(--x, 10px serif)';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'var(--x, 10px serif)';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '1em serif; background: green; margin: 10px';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
-t.done();
+  ctx.font = '20px serif';
+  ctx.font = '1em serif; background: green; margin: 10px';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.worker.js
index a4e19a6..31f3745 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.invalid.worker.js
@@ -13,56 +13,55 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '20px serif';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'bogus';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'bogus';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'inherit';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'inherit';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px {bogus}';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px {bogus}';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px initial';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px initial';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px default';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px default';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px inherit';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px inherit';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '10px revert';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = '10px revert';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'var(--x)';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'var(--x)';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = 'var(--x, 10px serif)';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  ctx.font = '20px serif';
+  ctx.font = 'var(--x, 10px serif)';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
 
-ctx.font = '20px serif';
-ctx.font = '1em serif; background: green; margin: 10px';
-_assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
-t.done();
-
+  ctx.font = '20px serif';
+  ctx.font = '1em serif; background: green; margin: 10px';
+  _assertSame(ctx.font, '20px serif', "ctx.font", "'20px serif'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.html
index 24cb730c..79ae6a3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = 'message-box';
-_assertDifferent(ctx.font, 'message-box', "ctx.font", "'message-box'");
-t.done();
+  ctx.font = 'message-box';
+  _assertDifferent(ctx.font, 'message-box', "ctx.font", "'message-box'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.worker.js
index 5c2a8b4..b965ea7 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.system.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = 'message-box';
-_assertDifferent(ctx.font, 'message-box', "ctx.font", "'message-box'");
-t.done();
-
+  ctx.font = 'message-box';
+  _assertDifferent(ctx.font, 'message-box', "ctx.font", "'message-box'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.html
index 6c17ad47..89f85159 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '1px sans-serif';
-_assertSame(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'");
-t.done();
+  ctx.font = '1px sans-serif';
+  _assertSame(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.worker.js
index 2171e2c..aba023e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.parse.tiny.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '1px sans-serif';
-_assertSame(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'");
-t.done();
-
+  ctx.font = '1px sans-serif';
+  _assertSame(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.html
index eef3be7..a32be3d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '1em sans-serif';
-_assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
-t.done();
+  ctx.font = '1em sans-serif';
+  _assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.worker.js
index c4d78b8..9e1247c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.font.relative_size.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = '1em sans-serif';
-_assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
-t.done();
-
+  ctx.font = '1em sans-serif';
+  _assertSame(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html
index b7ce281..96b3770 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html
@@ -17,39 +17,39 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    ctx.baseline = 'alphabetic'
-    // Some platforms may return '-0'.
-    _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
-    // Different platforms may render text slightly different.
-    _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
-    _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
-    _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      ctx.baseline = 'alphabetic'
+      // Some platforms may return '-0'.
+      _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
+      // Different platforms may render text slightly different.
+      _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
+      _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
+      _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
 
-    _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
-    _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
-    _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
-    _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
-    _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
-    _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
-    _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
-    _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
+      _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
+      _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
+      _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
+      _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
+      _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
+      _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
+      _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
+      _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
 
-    _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
-    _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
-    _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
-    _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
-}).then(t_pass, t_fail);
+      _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
+      _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
+      _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
+      _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js
index 4693bb6..b16ed415 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js
@@ -13,39 +13,38 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    ctx.baseline = 'alphabetic'
-    // Some platforms may return '-0'.
-    _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
-    // Different platforms may render text slightly different.
-    _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
-    _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
-    _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      ctx.baseline = 'alphabetic'
+      // Some platforms may return '-0'.
+      _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
+      // Different platforms may render text slightly different.
+      _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
+      _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
+      _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
 
-    _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
-    _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
-    _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
-    _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
-    _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
-    _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
-    _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
-    _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
+      _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
+      _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
+      _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
+      _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
+      _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
+      _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
+      _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
+      _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
 
-    _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
-    _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
-    _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
-    _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
-}).then(t_pass, t_fail);
-
+      _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
+      _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
+      _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
+      _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html
index ed3affc..f3bedd4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html
@@ -17,32 +17,32 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    // Some platforms may return '-0'.
-    _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
-    // Different platforms may render text slightly different.
-    _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
-    _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
-    _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
-    _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      // Some platforms may return '-0'.
+      _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
+      // Different platforms may render text slightly different.
+      _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
+      _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
+      _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
+      _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
 
-    var tm = ctx.measureText('Hello');
-    _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
-}).then(t_pass, t_fail);
+      var tm = ctx.measureText('Hello');
+      _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.js
index f1d4bb98..55c744a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.js
@@ -13,32 +13,31 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    // Some platforms may return '-0'.
-    _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
-    // Different platforms may render text slightly different.
-    _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
-    _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
-    _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
-    _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      // Some platforms may return '-0'.
+      _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
+      // Different platforms may render text slightly different.
+      _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
+      _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
+      _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
+      _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
 
-    var tm = ctx.measureText('Hello');
-    _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
-    _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
-}).then(t_pass, t_fail);
-
+      var tm = ctx.measureText('Hello');
+      _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
+      _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html
index 993fbb0..e58f9be 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-   ctx.font = '50px CanvasTest';
-   ctx.direction = 'ltr';
-   ctx.align = 'left'
-   _assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
-   _assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
-   _assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+     ctx.font = '50px CanvasTest';
+     ctx.direction = 'ltr';
+     ctx.align = 'left'
+     _assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
+     _assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
+     _assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
 
-   _assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
-   _assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
-   _assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
-}).then(t_pass, t_fail);
+     _assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
+     _assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
+     _assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js
index 0c06016..6f157f4e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-   ctx.font = '50px CanvasTest';
-   ctx.direction = 'ltr';
-   ctx.align = 'left'
-   _assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
-   _assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
-   _assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+     ctx.font = '50px CanvasTest';
+     ctx.direction = 'ltr';
+     ctx.align = 'left'
+     _assertSame(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0");
+     _assertSame(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39");
+     _assertSame(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68");
 
-   _assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
-   _assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
-   _assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
-}).then(t_pass, t_fail);
-
+     _assertSame(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0");
+     _assertSame(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39");
+     _assertSame(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html
index cc91f401..6a93bac 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
-    _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
-    _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
+      _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
+      _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
 
-    _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
-    _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
-    _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
-}).then(t_pass, t_fail);
+      _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
+      _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
+      _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js
index 88432343..1dd5f7c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
-    _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
-    _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
+      _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
+      _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
 
-    _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
-    _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
-    _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
-}).then(t_pass, t_fail);
-
+      _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
+      _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
+      _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html
index fca062b6..03ee45b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
-    _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
+      _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
 
-    _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
-    _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
-}).then(t_pass, t_fail);
+      _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
+      _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js
index 2f4b64d..65c5e9a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    ctx.direction = 'ltr';
-    ctx.align = 'left'
-    _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
-    _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      ctx.direction = 'ltr';
+      ctx.align = 'left'
+      _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85");
+      _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39");
 
-    _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
-    _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
-}).then(t_pass, t_fail);
-
+      _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85");
+      _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.html
index 074d62ee..fa47879 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.html
@@ -17,22 +17,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
-    _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
-    _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
+      _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
+      _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
 
-    ctx.font = '100px CanvasTest';
-    _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
-}).then(t_pass, t_fail);
+      ctx.font = '100px CanvasTest';
+      _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js
index a1933c8..265843ae 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js
@@ -13,22 +13,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
-    _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
-    _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
+      _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
+      _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
 
-    ctx.font = '100px CanvasTest';
-    _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
-}).then(t_pass, t_fail);
-
+      ctx.font = '100px CanvasTest';
+      _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.html
index 45792b4..7d412008 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
-}).then(t_pass, t_fail);
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js
index 8d806c1..68bba39 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
-}).then(t_pass, t_fail);
-
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.html
index 971a41e2..bff53f4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.html
@@ -17,23 +17,23 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
-    _assertSame(ctx.measureText('A  B').width, 200, "ctx.measureText('A  B').width", "200");
-    _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d  \\x09\\x0a\\x0c\\x0dB').width", "150");
-    _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
+      _assertSame(ctx.measureText('A  B').width, 200, "ctx.measureText('A  B').width", "200");
+      _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d  \\x09\\x0a\\x0c\\x0dB').width", "150");
+      _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
 
-    _assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
-    _assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
-}).then(t_pass, t_fail);
+      _assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
+      _assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
+  }).then(t_pass, t_fail);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js
index a52c1d8..83020b3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js
@@ -13,23 +13,22 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
-let fonts = (self.fonts ? self.fonts : document.fonts);
-f.load();
-fonts.add(f);
-fonts.ready.then(function() {
-    ctx.font = '50px CanvasTest';
-    _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
-    _assertSame(ctx.measureText('A  B').width, 200, "ctx.measureText('A  B').width", "200");
-    _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d  \\x09\\x0a\\x0c\\x0dB').width", "150");
-    _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
+  var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
+  let fonts = (self.fonts ? self.fonts : document.fonts);
+  f.load();
+  fonts.add(f);
+  fonts.ready.then(function() {
+      ctx.font = '50px CanvasTest';
+      _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
+      _assertSame(ctx.measureText('A  B').width, 200, "ctx.measureText('A  B').width", "200");
+      _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d  \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d  \\x09\\x0a\\x0c\\x0dB').width", "150");
+      _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
 
-    _assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
-    _assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
-}).then(t_pass, t_fail);
-
+      _assertSame(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100");
+      _assertSame(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100");
+  }).then(t_pass, t_fail);
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.html
index ed4752d..89d8fe3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = "math serif";
-t.done();
+  ctx.font = "math serif";
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.worker.js
index 39e3031e..b756b45 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/text/2d.text.setFont.mathFont.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.font = "math serif";
-t.done();
-
+  ctx.font = "math serif";
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.html
index 3a6e67b..208043f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.restore();
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.restore();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.worker.js
index c602488..09c7dcc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.bitmap.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.restore();
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.restore();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.html
index e96df9e..f4d6b6f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.html
@@ -17,19 +17,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.rect(0, 0, 1, 1);
-ctx.clip();
-ctx.restore();
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.rect(0, 0, 1, 1);
+  ctx.clip();
+  ctx.restore();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.worker.js
index 622d941..a7bc061 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.clip.worker.js
@@ -13,19 +13,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.rect(0, 0, 1, 1);
-ctx.clip();
-ctx.restore();
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.rect(0, 0, 1, 1);
+  ctx.clip();
+  ctx.restore();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.html
index 91b23bd..789e1e8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.fillStyle;
-ctx.save();
-ctx.fillStyle = "#ff0000";
-ctx.restore();
-_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.fillStyle;
+  ctx.save();
+  ctx.fillStyle = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
 
-// Also test that save() doesn't modify the values
-ctx.fillStyle = "#ff0000";
-old = ctx.fillStyle;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.fillStyle = "#ff0000";
+  old = ctx.fillStyle;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.worker.js
index fa4d773..46cf6d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.fillStyle;
-ctx.save();
-ctx.fillStyle = "#ff0000";
-ctx.restore();
-_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.fillStyle;
+  ctx.save();
+  ctx.fillStyle = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
 
-// Also test that save() doesn't modify the values
-ctx.fillStyle = "#ff0000";
-old = ctx.fillStyle;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.fillStyle = "#ff0000";
+  old = ctx.fillStyle;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.html
index 01b9616..15b5972 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.globalAlpha;
-ctx.save();
-ctx.globalAlpha = 0.5;
-ctx.restore();
-_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.globalAlpha;
+  ctx.save();
+  ctx.globalAlpha = 0.5;
+  ctx.restore();
+  _assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
 
-// Also test that save() doesn't modify the values
-ctx.globalAlpha = 0.5;
-old = ctx.globalAlpha;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.globalAlpha = 0.5;
+  old = ctx.globalAlpha;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js
index 8b11054..765f8b0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.globalAlpha;
-ctx.save();
-ctx.globalAlpha = 0.5;
-ctx.restore();
-_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.globalAlpha;
+  ctx.save();
+  ctx.globalAlpha = 0.5;
+  ctx.restore();
+  _assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
 
-// Also test that save() doesn't modify the values
-ctx.globalAlpha = 0.5;
-old = ctx.globalAlpha;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.globalAlpha = 0.5;
+  old = ctx.globalAlpha;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
index 557d3c0..1efb24a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.globalCompositeOperation;
-ctx.save();
-ctx.globalCompositeOperation = "copy";
-ctx.restore();
-_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.globalCompositeOperation;
+  ctx.save();
+  ctx.globalCompositeOperation = "copy";
+  ctx.restore();
+  _assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
 
-// Also test that save() doesn't modify the values
-ctx.globalCompositeOperation = "copy";
-old = ctx.globalCompositeOperation;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "copy"
-ctx.save();
-_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.globalCompositeOperation = "copy";
+  old = ctx.globalCompositeOperation;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "copy"
+  ctx.save();
+  _assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js
index 3534147..cd38d56 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.globalCompositeOperation;
-ctx.save();
-ctx.globalCompositeOperation = "copy";
-ctx.restore();
-_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.globalCompositeOperation;
+  ctx.save();
+  ctx.globalCompositeOperation = "copy";
+  ctx.restore();
+  _assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
 
-// Also test that save() doesn't modify the values
-ctx.globalCompositeOperation = "copy";
-old = ctx.globalCompositeOperation;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "copy"
-ctx.save();
-_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.globalCompositeOperation = "copy";
+  old = ctx.globalCompositeOperation;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "copy"
+  ctx.save();
+  _assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.html
index e02cbd46d..5e651d0 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.lineCap;
-ctx.save();
-ctx.lineCap = "round";
-ctx.restore();
-_assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineCap;
+  ctx.save();
+  ctx.lineCap = "round";
+  ctx.restore();
+  _assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineCap = "round";
-old = ctx.lineCap;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "round"
-ctx.save();
-_assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.lineCap = "round";
+  old = ctx.lineCap;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "round"
+  ctx.save();
+  _assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.worker.js
index 70de46a..9895b44 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineCap.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.lineCap;
-ctx.save();
-ctx.lineCap = "round";
-ctx.restore();
-_assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineCap;
+  ctx.save();
+  ctx.lineCap = "round";
+  ctx.restore();
+  _assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineCap = "round";
-old = ctx.lineCap;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "round"
-ctx.save();
-_assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.lineCap = "round";
+  old = ctx.lineCap;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "round"
+  ctx.save();
+  _assertSame(ctx.lineCap, old, "ctx.lineCap", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.html
index 92100e9..20f53fe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.lineJoin;
-ctx.save();
-ctx.lineJoin = "round";
-ctx.restore();
-_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineJoin;
+  ctx.save();
+  ctx.lineJoin = "round";
+  ctx.restore();
+  _assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineJoin = "round";
-old = ctx.lineJoin;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "round"
-ctx.save();
-_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.lineJoin = "round";
+  old = ctx.lineJoin;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "round"
+  ctx.save();
+  _assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.worker.js
index 1da6db8..e8c8582 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineJoin.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.lineJoin;
-ctx.save();
-ctx.lineJoin = "round";
-ctx.restore();
-_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineJoin;
+  ctx.save();
+  ctx.lineJoin = "round";
+  ctx.restore();
+  _assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineJoin = "round";
-old = ctx.lineJoin;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "round"
-ctx.save();
-_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.lineJoin = "round";
+  old = ctx.lineJoin;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "round"
+  ctx.save();
+  _assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.html
index 24f9550..e234e3e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.lineWidth;
-ctx.save();
-ctx.lineWidth = 0.5;
-ctx.restore();
-_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineWidth;
+  ctx.save();
+  ctx.lineWidth = 0.5;
+  ctx.restore();
+  _assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineWidth = 0.5;
-old = ctx.lineWidth;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.lineWidth = 0.5;
+  old = ctx.lineWidth;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.worker.js
index 657ded5..997748c3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.lineWidth.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.lineWidth;
-ctx.save();
-ctx.lineWidth = 0.5;
-ctx.restore();
-_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.lineWidth;
+  ctx.save();
+  ctx.lineWidth = 0.5;
+  ctx.restore();
+  _assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
 
-// Also test that save() doesn't modify the values
-ctx.lineWidth = 0.5;
-old = ctx.lineWidth;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.lineWidth = 0.5;
+  old = ctx.lineWidth;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.html
index b674467..1df2b242 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.miterLimit;
-ctx.save();
-ctx.miterLimit = 0.5;
-ctx.restore();
-_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.miterLimit;
+  ctx.save();
+  ctx.miterLimit = 0.5;
+  ctx.restore();
+  _assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
 
-// Also test that save() doesn't modify the values
-ctx.miterLimit = 0.5;
-old = ctx.miterLimit;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.miterLimit = 0.5;
+  old = ctx.miterLimit;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.worker.js
index 745f291..eb5adffe 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.miterLimit.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.miterLimit;
-ctx.save();
-ctx.miterLimit = 0.5;
-ctx.restore();
-_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.miterLimit;
+  ctx.save();
+  ctx.miterLimit = 0.5;
+  ctx.restore();
+  _assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
 
-// Also test that save() doesn't modify the values
-ctx.miterLimit = 0.5;
-old = ctx.miterLimit;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 0.5
-ctx.save();
-_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.miterLimit = 0.5;
+  old = ctx.miterLimit;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 0.5
+  ctx.save();
+  _assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.html
index 34c0b1e..a86851af68 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.rect(0, 0, 100, 50);
-ctx.restore();
-ctx.fillStyle = '#0f0';
-ctx.fill();
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.rect(0, 0, 100, 50);
+  ctx.restore();
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.worker.js
index 24cec159..d174de5a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.path.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.rect(0, 0, 100, 50);
-ctx.restore();
-ctx.fillStyle = '#0f0';
-ctx.fill();
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.rect(0, 0, 100, 50);
+  ctx.restore();
+  ctx.fillStyle = '#0f0';
+  ctx.fill();
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.html
index af2ee91..044ee1b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowBlur;
-ctx.save();
-ctx.shadowBlur = 5;
-ctx.restore();
-_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowBlur;
+  ctx.save();
+  ctx.shadowBlur = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowBlur = 5;
-old = ctx.shadowBlur;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.shadowBlur = 5;
+  old = ctx.shadowBlur;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js
index 12acd3d..00cd6f83 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowBlur;
-ctx.save();
-ctx.shadowBlur = 5;
-ctx.restore();
-_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowBlur;
+  ctx.save();
+  ctx.shadowBlur = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowBlur = 5;
-old = ctx.shadowBlur;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowBlur = 5;
+  old = ctx.shadowBlur;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.html
index 5aa01941..0e8b429 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowColor;
-ctx.save();
-ctx.shadowColor = "#ff0000";
-ctx.restore();
-_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowColor;
+  ctx.save();
+  ctx.shadowColor = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowColor = "#ff0000";
-old = ctx.shadowColor;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.shadowColor = "#ff0000";
+  old = ctx.shadowColor;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.worker.js
index b2f9fb9..13c033f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowColor.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowColor;
-ctx.save();
-ctx.shadowColor = "#ff0000";
-ctx.restore();
-_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowColor;
+  ctx.save();
+  ctx.shadowColor = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowColor = "#ff0000";
-old = ctx.shadowColor;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowColor = "#ff0000";
+  old = ctx.shadowColor;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
index f281234..11aa658 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowOffsetX;
-ctx.save();
-ctx.shadowOffsetX = 5;
-ctx.restore();
-_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowOffsetX;
+  ctx.save();
+  ctx.shadowOffsetX = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowOffsetX = 5;
-old = ctx.shadowOffsetX;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.shadowOffsetX = 5;
+  old = ctx.shadowOffsetX;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js
index 2711817..a6ad922 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowOffsetX;
-ctx.save();
-ctx.shadowOffsetX = 5;
-ctx.restore();
-_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowOffsetX;
+  ctx.save();
+  ctx.shadowOffsetX = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowOffsetX = 5;
-old = ctx.shadowOffsetX;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowOffsetX = 5;
+  old = ctx.shadowOffsetX;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
index 643ce99..c238f0e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowOffsetY;
-ctx.save();
-ctx.shadowOffsetY = 5;
-ctx.restore();
-_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowOffsetY;
+  ctx.save();
+  ctx.shadowOffsetY = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowOffsetY = 5;
-old = ctx.shadowOffsetY;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.shadowOffsetY = 5;
+  old = ctx.shadowOffsetY;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js
index aaa572a..323fcd14 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.shadowOffsetY;
-ctx.save();
-ctx.shadowOffsetY = 5;
-ctx.restore();
-_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.shadowOffsetY;
+  ctx.save();
+  ctx.shadowOffsetY = 5;
+  ctx.restore();
+  _assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
 
-// Also test that save() doesn't modify the values
-ctx.shadowOffsetY = 5;
-old = ctx.shadowOffsetY;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against 5
-ctx.save();
-_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.shadowOffsetY = 5;
+  old = ctx.shadowOffsetY;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against 5
+  ctx.save();
+  _assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.html
index 97917680..4a87508 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.lineWidth = 1;
-ctx.save();
-ctx.lineWidth = 2;
-ctx.save();
-ctx.lineWidth = 3;
-_assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3");
-ctx.restore();
-_assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2");
-ctx.restore();
-_assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1");
-t.done();
+  ctx.lineWidth = 1;
+  ctx.save();
+  ctx.lineWidth = 2;
+  ctx.save();
+  ctx.lineWidth = 3;
+  _assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3");
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2");
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.worker.js
index e1f078e..460df4ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stack.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.lineWidth = 1;
-ctx.save();
-ctx.lineWidth = 2;
-ctx.save();
-ctx.lineWidth = 3;
-_assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3");
-ctx.restore();
-_assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2");
-ctx.restore();
-_assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1");
-t.done();
-
+  ctx.lineWidth = 1;
+  ctx.save();
+  ctx.lineWidth = 2;
+  ctx.save();
+  ctx.lineWidth = 3;
+  _assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3");
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2");
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.html
index 53dbc63c..d536155 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.html
@@ -17,21 +17,21 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var limit = 512;
-for (var i = 1; i < limit; ++i)
-{
-    ctx.save();
-    ctx.lineWidth = i;
-}
-for (var i = limit-1; i > 0; --i)
-{
-    _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i");
-    ctx.restore();
-}
-t.done();
+  var limit = 512;
+  for (var i = 1; i < limit; ++i)
+  {
+      ctx.save();
+      ctx.lineWidth = i;
+  }
+  for (var i = limit-1; i > 0; --i)
+  {
+      _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i");
+      ctx.restore();
+  }
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.worker.js
index a485c194..c494d9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.stackdepth.worker.js
@@ -13,21 +13,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var limit = 512;
-for (var i = 1; i < limit; ++i)
-{
-    ctx.save();
-    ctx.lineWidth = i;
-}
-for (var i = limit-1; i > 0; --i)
-{
-    _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i");
-    ctx.restore();
-}
-t.done();
-
+  var limit = 512;
+  for (var i = 1; i < limit; ++i)
+  {
+      ctx.save();
+      ctx.lineWidth = i;
+  }
+  for (var i = limit-1; i > 0; --i)
+  {
+      _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i");
+      ctx.restore();
+  }
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.html
index 60963729..561205a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.html
@@ -17,25 +17,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.strokeStyle;
-ctx.save();
-ctx.strokeStyle = "#ff0000";
-ctx.restore();
-_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.strokeStyle;
+  ctx.save();
+  ctx.strokeStyle = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
 
-// Also test that save() doesn't modify the values
-ctx.strokeStyle = "#ff0000";
-old = ctx.strokeStyle;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
-ctx.restore();
-t.done();
+  // Also test that save() doesn't modify the values
+  ctx.strokeStyle = "#ff0000";
+  old = ctx.strokeStyle;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
+  ctx.restore();
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js
index 275ba9e0..878a6d6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js
@@ -13,25 +13,24 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-// Test that restore() undoes any modifications
-var old = ctx.strokeStyle;
-ctx.save();
-ctx.strokeStyle = "#ff0000";
-ctx.restore();
-_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
+  // Test that restore() undoes any modifications
+  var old = ctx.strokeStyle;
+  ctx.save();
+  ctx.strokeStyle = "#ff0000";
+  ctx.restore();
+  _assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
 
-// Also test that save() doesn't modify the values
-ctx.strokeStyle = "#ff0000";
-old = ctx.strokeStyle;
-    // we're not interested in failures caused by get(set(x)) != x (e.g.
-    // from rounding), so compare against 'old' instead of against "#ff0000"
-ctx.save();
-_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
-ctx.restore();
-t.done();
-
+  // Also test that save() doesn't modify the values
+  ctx.strokeStyle = "#ff0000";
+  old = ctx.strokeStyle;
+      // we're not interested in failures caused by get(set(x)) != x (e.g.
+      // from rounding), so compare against 'old' instead of against "#ff0000"
+  ctx.save();
+  _assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old");
+  ctx.restore();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.html
index fff2ead..79ecdec 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.html
@@ -17,18 +17,18 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.translate(200, 0);
-ctx.restore();
-ctx.fillStyle = '#f00';
-ctx.fillRect(-200, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.translate(200, 0);
+  ctx.restore();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(-200, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.worker.js
index 64fb4c4..1647dfb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.transformation.worker.js
@@ -13,18 +13,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-ctx.save();
-ctx.translate(200, 0);
-ctx.restore();
-ctx.fillStyle = '#f00';
-ctx.fillRect(-200, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.save();
+  ctx.translate(200, 0);
+  ctx.restore();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(-200, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.html
index 986d966..a6713ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-for (var i = 0; i < 16; ++i)
-    ctx.restore();
-ctx.lineWidth = 0.5;
-ctx.restore();
-_assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5");
-t.done();
+  for (var i = 0; i < 16; ++i)
+      ctx.restore();
+  ctx.lineWidth = 0.5;
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.worker.js
index d38cf974..8ed4bcb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.underflow.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-for (var i = 0; i < 16; ++i)
-    ctx.restore();
-ctx.lineWidth = 0.5;
-ctx.restore();
-_assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5");
-t.done();
-
+  for (var i = 0; i < 16; ++i)
+      ctx.restore();
+  ctx.lineWidth = 0.5;
+  ctx.restore();
+  _assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.html
index ec6ffe5..6bc6eef 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var d = ctx.canvas;
-_assertDifferent(offscreenCanvas2, d, "offscreenCanvas2", "d");
-ctx.canvas = offscreenCanvas2;
-_assertSame(ctx.canvas, d, "ctx.canvas", "d");
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var d = ctx.canvas;
+  _assertDifferent(offscreenCanvas2, d, "offscreenCanvas2", "d");
+  ctx.canvas = offscreenCanvas2;
+  _assertSame(ctx.canvas, d, "ctx.canvas", "d");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.worker.js
index 8f88efd6..068c2c2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.readonly.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-var d = ctx.canvas;
-_assertDifferent(offscreenCanvas2, d, "offscreenCanvas2", "d");
-ctx.canvas = offscreenCanvas2;
-_assertSame(ctx.canvas, d, "ctx.canvas", "d");
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  var d = ctx.canvas;
+  _assertDifferent(offscreenCanvas2, d, "offscreenCanvas2", "d");
+  ctx.canvas = offscreenCanvas2;
+  _assertSame(ctx.canvas, d, "ctx.canvas", "d");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.html
index 024b1fe7..c43afd8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.canvas, canvas, "ctx.canvas", "canvas");
-t.done();
+  _assertSame(ctx.canvas, canvas, "ctx.canvas", "canvas");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.worker.js
index a80e559..a1578af 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.canvas.reference.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(ctx.canvas, canvas, "ctx.canvas", "canvas");
-t.done();
-
+  _assertSame(ctx.canvas, canvas, "ctx.canvas", "canvas");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.html
index 55bdf1cc..73fc45c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-_assertDifferent(offscreenCanvas2.getContext('2d'), null, "offscreenCanvas2.getContext('2d')", "null");
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  _assertDifferent(offscreenCanvas2.getContext('2d'), null, "offscreenCanvas2.getContext('2d')", "null");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.worker.js
index 97f8cc74..0ed6f2424 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.exists.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-_assertDifferent(offscreenCanvas2.getContext('2d'), null, "offscreenCanvas2.getContext('2d')", "null");
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  _assertDifferent(offscreenCanvas2.getContext('2d'), null, "offscreenCanvas2.getContext('2d')", "null");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.html
index a57dbcb6..2f57050a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertDifferent(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null");
-_assertDifferent(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null");
-_assertDifferent(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null");
-_assertDifferent(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null");
-_assertDifferent(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null");
-_assertDifferent(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null");
-t.done();
+  _assertDifferent(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null");
+  _assertDifferent(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null");
+  _assertDifferent(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null");
+  _assertDifferent(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null");
+  _assertDifferent(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null");
+  _assertDifferent(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.worker.js
index df330e3..8854051 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.cache.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertDifferent(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null");
-_assertDifferent(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null");
-_assertDifferent(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null");
-_assertDifferent(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null");
-_assertDifferent(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null");
-_assertDifferent(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null");
-t.done();
-
+  _assertDifferent(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null");
+  _assertDifferent(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null");
+  _assertDifferent(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null");
+  _assertDifferent(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null");
+  _assertDifferent(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null");
+  _assertDifferent(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.html
index a626318..a2869c4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, "2"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, \"2\")", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', 123), null, "(new OffscreenCanvas(100, 50)).getContext('2d', 123)", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', "test"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', \"test\")", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', undefined), null, "(new OffscreenCanvas(100, 50)).getContext('2d', undefined)", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', null), null, "(new OffscreenCanvas(100, 50)).getContext('2d', null)", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance), null, "(new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance)", "null");
-t.done();
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, "2"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, \"2\")", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', 123), null, "(new OffscreenCanvas(100, 50)).getContext('2d', 123)", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', "test"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', \"test\")", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', undefined), null, "(new OffscreenCanvas(100, 50)).getContext('2d', undefined)", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', null), null, "(new OffscreenCanvas(100, 50)).getContext('2d', null)", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance), null, "(new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance)", "null");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.worker.js
index f34c5a1..21d4f8ce 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, "2"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, \"2\")", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', 123), null, "(new OffscreenCanvas(100, 50)).getContext('2d', 123)", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', "test"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', \"test\")", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', undefined), null, "(new OffscreenCanvas(100, 50)).getContext('2d', undefined)", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', null), null, "(new OffscreenCanvas(100, 50)).getContext('2d', null)", "null");
-_assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance), null, "(new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance)", "null");
-t.done();
-
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, "2"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', false, {}, [], 1, \"2\")", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', 123), null, "(new OffscreenCanvas(100, 50)).getContext('2d', 123)", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', "test"), null, "(new OffscreenCanvas(100, 50)).getContext('2d', \"test\")", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', undefined), null, "(new OffscreenCanvas(100, 50)).getContext('2d', undefined)", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', null), null, "(new OffscreenCanvas(100, 50)).getContext('2d', null)", "null");
+  _assertDifferent((new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance), null, "(new OffscreenCanvas(100, 50)).getContext('2d', Symbol.hasInstance)", "null");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.html
index 6d616252..c37664f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var ctx2 = canvas.getContext('2d');
-ctx.fillStyle = '#f00';
-ctx2.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  var ctx2 = canvas.getContext('2d');
+  ctx.fillStyle = '#f00';
+  ctx2.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.worker.js
index 4b8dd52e..936ca03 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.shared.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var ctx2 = canvas.getContext('2d');
-ctx.fillStyle = '#f00';
-ctx2.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  var ctx2 = canvas.getContext('2d');
+  ctx.fillStyle = '#f00';
+  ctx2.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.html
index c7e71da..945526c5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-_assertSame(offscreenCanvas2.getContext('2d'), offscreenCanvas2.getContext('2d'), "offscreenCanvas2.getContext('2d')", "offscreenCanvas2.getContext('2d')");
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  _assertSame(offscreenCanvas2.getContext('2d'), offscreenCanvas2.getContext('2d'), "offscreenCanvas2.getContext('2d')", "offscreenCanvas2.getContext('2d')");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.worker.js
index a2a744df..fbf8e3c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.unique.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-_assertSame(offscreenCanvas2.getContext('2d'), offscreenCanvas2.getContext('2d'), "offscreenCanvas2.getContext('2d')", "offscreenCanvas2.getContext('2d')");
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  _assertSame(offscreenCanvas2.getContext('2d'), offscreenCanvas2.getContext('2d'), "offscreenCanvas2.getContext('2d')", "offscreenCanvas2.getContext('2d')");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.html
index b69f63c..4d5478e8 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.worker.js
index f03ca52..f20db3ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.arguments.missing.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.html
index e7ee0c6..6183607 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('2D'); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('2D'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.worker.js
index 265fe95..a834a3e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.casesensitive.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('2D'); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('2D'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.html
index c8f8943..b898698 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(""); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(""); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.worker.js
index 45612d3..df7d06df 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.emptystring.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(""); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext(""); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.html
index d1b0f2f..5460fe1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('This is not an implemented context in any real browser'); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('This is not an implemented context in any real browser'); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.worker.js
index cc50c2bdb..8dfee54 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badname.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('This is not an implemented context in any real browser'); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext('This is not an implemented context in any real browser'); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.html
index 30178af..72624be 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d#"); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d#"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js
index 7b3d8a0..6cfcbc3 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d#"); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d#"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.html
index 2a22549..f36f7583 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d\0"); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d\0"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js
index b659410..d9b563db 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d\0"); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2d\0"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.html
index 0c826595..f8176f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2\uFF44"); });
-t.done();
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2\uFF44"); });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.worker.js
index cade5a20..2d02a79 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/context.unrecognised.unicode.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var offscreenCanvas2 = new OffscreenCanvas(100, 50);
-assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2\uFF44"); });
-t.done();
-
+  var offscreenCanvas2 = new OffscreenCanvas(100, 50);
+  assert_throws_js(TypeError, function() { offscreenCanvas2.getContext("2\uFF44"); });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.html
index bfdcef7..d89b01df 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js
index 2a6e6e5..c9705727 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.color.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
-
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.html
index 76b76070..55954fc 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.html
@@ -17,72 +17,73 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-var default_val;
+  canvas.width = 100;
+  var default_val;
 
-default_val = ctx.strokeStyle;
-ctx.strokeStyle = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val");
+  default_val = ctx.strokeStyle;
+  ctx.strokeStyle = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val");
 
-default_val = ctx.fillStyle;
-ctx.fillStyle = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val");
+  default_val = ctx.fillStyle;
+  ctx.fillStyle = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val");
 
-default_val = ctx.globalAlpha;
-ctx.globalAlpha = 0.5;
-canvas.width = 100;
-_assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val");
+  default_val = ctx.globalAlpha;
+  ctx.globalAlpha = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val");
 
-default_val = ctx.lineWidth;
-ctx.lineWidth = 0.5;
-canvas.width = 100;
-_assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val");
+  default_val = ctx.lineWidth;
+  ctx.lineWidth = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val");
 
-default_val = ctx.lineCap;
-ctx.lineCap = "round";
-canvas.width = 100;
-_assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val");
+  default_val = ctx.lineCap;
+  ctx.lineCap = "round";
+  canvas.width = 100;
+  _assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val");
 
-default_val = ctx.lineJoin;
-ctx.lineJoin = "round";
-canvas.width = 100;
-_assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val");
+  default_val = ctx.lineJoin;
+  ctx.lineJoin = "round";
+  canvas.width = 100;
+  _assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val");
 
-default_val = ctx.miterLimit;
-ctx.miterLimit = 0.5;
-canvas.width = 100;
-_assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val");
+  default_val = ctx.miterLimit;
+  ctx.miterLimit = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val");
 
-default_val = ctx.shadowOffsetX;
-ctx.shadowOffsetX = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val");
+  default_val = ctx.shadowOffsetX;
+  ctx.shadowOffsetX = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val");
 
-default_val = ctx.shadowOffsetY;
-ctx.shadowOffsetY = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val");
+  default_val = ctx.shadowOffsetY;
+  ctx.shadowOffsetY = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val");
 
-default_val = ctx.shadowBlur;
-ctx.shadowBlur = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val");
+  default_val = ctx.shadowBlur;
+  ctx.shadowBlur = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val");
 
-default_val = ctx.shadowColor;
-ctx.shadowColor = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val");
+  default_val = ctx.shadowColor;
+  ctx.shadowColor = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val");
 
-default_val = ctx.globalCompositeOperation;
-ctx.globalCompositeOperation = "copy";
-canvas.width = 100;
-_assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val");
+  default_val = ctx.globalCompositeOperation;
+  ctx.globalCompositeOperation = "copy";
+  canvas.width = 100;
+  _assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val");
 
-t.done();
+  t.done();
+
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.worker.js
index 273c5f0b..dc0d6ea 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.2dstate.worker.js
@@ -13,72 +13,72 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-var default_val;
+  canvas.width = 100;
+  var default_val;
 
-default_val = ctx.strokeStyle;
-ctx.strokeStyle = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val");
+  default_val = ctx.strokeStyle;
+  ctx.strokeStyle = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val");
 
-default_val = ctx.fillStyle;
-ctx.fillStyle = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val");
+  default_val = ctx.fillStyle;
+  ctx.fillStyle = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val");
 
-default_val = ctx.globalAlpha;
-ctx.globalAlpha = 0.5;
-canvas.width = 100;
-_assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val");
+  default_val = ctx.globalAlpha;
+  ctx.globalAlpha = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val");
 
-default_val = ctx.lineWidth;
-ctx.lineWidth = 0.5;
-canvas.width = 100;
-_assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val");
+  default_val = ctx.lineWidth;
+  ctx.lineWidth = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val");
 
-default_val = ctx.lineCap;
-ctx.lineCap = "round";
-canvas.width = 100;
-_assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val");
+  default_val = ctx.lineCap;
+  ctx.lineCap = "round";
+  canvas.width = 100;
+  _assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val");
 
-default_val = ctx.lineJoin;
-ctx.lineJoin = "round";
-canvas.width = 100;
-_assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val");
+  default_val = ctx.lineJoin;
+  ctx.lineJoin = "round";
+  canvas.width = 100;
+  _assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val");
 
-default_val = ctx.miterLimit;
-ctx.miterLimit = 0.5;
-canvas.width = 100;
-_assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val");
+  default_val = ctx.miterLimit;
+  ctx.miterLimit = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val");
 
-default_val = ctx.shadowOffsetX;
-ctx.shadowOffsetX = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val");
+  default_val = ctx.shadowOffsetX;
+  ctx.shadowOffsetX = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val");
 
-default_val = ctx.shadowOffsetY;
-ctx.shadowOffsetY = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val");
+  default_val = ctx.shadowOffsetY;
+  ctx.shadowOffsetY = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val");
 
-default_val = ctx.shadowBlur;
-ctx.shadowBlur = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val");
+  default_val = ctx.shadowBlur;
+  ctx.shadowBlur = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val");
 
-default_val = ctx.shadowColor;
-ctx.shadowColor = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val");
+  default_val = ctx.shadowColor;
+  ctx.shadowColor = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val");
 
-default_val = ctx.globalCompositeOperation;
-ctx.globalCompositeOperation = "copy";
-canvas.width = 100;
-_assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val");
+  default_val = ctx.globalCompositeOperation;
+  ctx.globalCompositeOperation = "copy";
+  canvas.width = 100;
+  _assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val");
 
-t.done();
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html
index 87a3e43..9b1354bd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.html
@@ -17,17 +17,17 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.rect(0, 0, 1, 1);
-ctx.clip();
-canvas.width = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-t.done();
+  canvas.width = 100;
+  ctx.rect(0, 0, 1, 1);
+  ctx.clip();
+  canvas.width = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js
index 45ee30d..d774aad6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.clip.worker.js
@@ -13,17 +13,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.rect(0, 0, 1, 1);
-ctx.clip();
-canvas.width = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-t.done();
-
+  canvas.width = 100;
+  ctx.rect(0, 0, 1, 1);
+  ctx.clip();
+  canvas.width = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html
index 632bc2f..a5c891ff 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 20,20, 255,0,0,255);
-canvas.width = 50;
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 20,20, 255,0,0,255);
+  canvas.width = 50;
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js
index 9d840a5..dc8f4bd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.different.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 20,20, 255,0,0,255);
-canvas.width = 50;
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
-
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 20,20, 255,0,0,255);
+  canvas.width = 50;
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html
index 96819a0..8b734d19 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 50;
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  canvas.width = 50;
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js
index a18d11e..dabc013 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.gradient.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 50;
-var g = ctx.createLinearGradient(0, 0, 100, 0);
-g.addColorStop(0, '#0f0');
-g.addColorStop(1, '#0f0');
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = g;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  canvas.width = 50;
+  var g = ctx.createLinearGradient(0, 0, 100, 0);
+  g.addColorStop(0, '#0f0');
+  g.addColorStop(1, '#0f0');
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = g;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html
index 3c9667c..24b7ff22 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.rect(0, 0, 100, 50);
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fill();
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
+  canvas.width = 100;
+  ctx.rect(0, 0, 100, 50);
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fill();
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js
index 9f34734a..65352324 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.path.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.rect(0, 0, 100, 50);
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fill();
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
-
+  canvas.width = 100;
+  ctx.rect(0, 0, 100, 50);
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fill();
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html
index 3766795b..2742d8f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.html
@@ -17,20 +17,20 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 30;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 30, 50);
-var p = ctx.createPattern(canvas, 'repeat-x');
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = p;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
+  canvas.width = 30;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 30, 50);
+  var p = ctx.createPattern(canvas, 'repeat-x');
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = p;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js
index 1fe6c01..a69f36e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.pattern.worker.js
@@ -13,20 +13,19 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 30;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 30, 50);
-var p = ctx.createPattern(canvas, 'repeat-x');
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-ctx.fillStyle = p;
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-t.done();
-
+  canvas.width = 30;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 30, 50);
+  var p = ctx.createPattern(canvas, 'repeat-x');
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  ctx.fillStyle = p;
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html
index bfcf050..137dcbd5 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 20,20, 255,0,0,255);
-canvas.width = 100;
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 20,20, 255,0,0,255);
+  canvas.width = 100;
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js
index 00db682..fd3c464 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.same.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 50, 50);
-_assertPixel(canvas, 20,20, 255,0,0,255);
-canvas.width = 100;
-_assertPixel(canvas, 20,20, 0,0,0,0);
-t.done();
-
+  canvas.width = 100;
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 50, 50);
+  _assertPixel(canvas, 20,20, 255,0,0,255);
+  canvas.width = 100;
+  _assertPixel(canvas, 20,20, 0,0,0,0);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html
index 402b34f..d09f8f92 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.html
@@ -17,16 +17,16 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.scale(0.1, 0.1);
-canvas.width = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-t.done();
+  canvas.width = 100;
+  ctx.scale(0.1, 0.1);
+  canvas.width = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js
index 3fb80d0..564a3bd 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/initial.reset.transform.worker.js
@@ -13,16 +13,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 100;
-ctx.scale(0.1, 0.1);
-canvas.width = 100;
-ctx.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 20,20, 0,255,0,255);
-t.done();
-
+  canvas.width = 100;
+  ctx.scale(0.1, 0.1);
+  canvas.width = 100;
+  ctx.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 20,20, 0,255,0,255);
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.html
index 6ebd35f..52ddf11 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.html
@@ -17,12 +17,12 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 50, "canvas.height", "50");
-t.done();
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 50, "canvas.height", "50");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.worker.js
index c77b8a4..83e0271f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.default.worker.js
@@ -13,12 +13,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 50, "canvas.height", "50");
-t.done();
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 50, "canvas.height", "50");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.html
index fda4e92..a815a7be 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.html
@@ -17,26 +17,26 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = "100";
-canvas.height = "100";
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-canvas.width = "+1.5e2";
-canvas.height = "0x96";
-_assertSame(canvas.width, 150, "canvas.width", "150");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-canvas.width = 301.999;
-canvas.height = 301.001;
-_assertSame(canvas.width, 301, "canvas.width", "301");
-_assertSame(canvas.height, 301, "canvas.height", "301");
-assert_throws_js(TypeError, function() { canvas.width = "400x"; });
-assert_throws_js(TypeError, function() { canvas.height = "foo"; });
-_assertSame(canvas.width, 301, "canvas.width", "301");
-_assertSame(canvas.height, 301, "canvas.height", "301");
-t.done();
+  canvas.width = "100";
+  canvas.height = "100";
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  canvas.width = "+1.5e2";
+  canvas.height = "0x96";
+  _assertSame(canvas.width, 150, "canvas.width", "150");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  canvas.width = 301.999;
+  canvas.height = 301.001;
+  _assertSame(canvas.width, 301, "canvas.width", "301");
+  _assertSame(canvas.height, 301, "canvas.height", "301");
+  assert_throws_js(TypeError, function() { canvas.width = "400x"; });
+  assert_throws_js(TypeError, function() { canvas.height = "foo"; });
+  _assertSame(canvas.width, 301, "canvas.width", "301");
+  _assertSame(canvas.height, 301, "canvas.height", "301");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.html
index 4bf7b9c..5a069f3c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js
index 2ecf199..d51258a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
-
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.worker.js
index 16350ae..931b95c 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.worker.js
@@ -13,26 +13,25 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = "100";
-canvas.height = "100";
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-canvas.width = "+1.5e2";
-canvas.height = "0x96";
-_assertSame(canvas.width, 150, "canvas.width", "150");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-canvas.width = 301.999;
-canvas.height = 301.001;
-_assertSame(canvas.width, 301, "canvas.width", "301");
-_assertSame(canvas.height, 301, "canvas.height", "301");
-assert_throws_js(TypeError, function() { canvas.width = "400x"; });
-assert_throws_js(TypeError, function() { canvas.height = "foo"; });
-_assertSame(canvas.width, 301, "canvas.width", "301");
-_assertSame(canvas.height, 301, "canvas.height", "301");
-t.done();
-
+  canvas.width = "100";
+  canvas.height = "100";
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  canvas.width = "+1.5e2";
+  canvas.height = "0x96";
+  _assertSame(canvas.width, 150, "canvas.width", "150");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  canvas.width = 301.999;
+  canvas.height = 301.001;
+  _assertSame(canvas.width, 301, "canvas.width", "301");
+  _assertSame(canvas.height, 301, "canvas.height", "301");
+  assert_throws_js(TypeError, function() { canvas.width = "400x"; });
+  assert_throws_js(TypeError, function() { canvas.height = "foo"; });
+  _assertSame(canvas.width, 301, "canvas.width", "301");
+  _assertSame(canvas.height, 301, "canvas.height", "301");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.html
index a74fe15..688d80b 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '100.999';
-canvas.height = '100.999';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
+  canvas.width = '100.999';
+  canvas.height = '100.999';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.worker.js
index 7b982e8..157bd61 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.decimal.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '100.999';
-canvas.height = '100.999';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
-
+  canvas.width = '100.999';
+  canvas.height = '100.999';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.html
index 5a8eee2..2e5056a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '100em'; });
-t.done();
+  assert_throws_js(TypeError, function() { canvas.width = '100em'; });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.worker.js
index a0248d4e..b939765 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '100em'; });
-t.done();
-
+  assert_throws_js(TypeError, function() { canvas.width = '100em'; });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html
index eab54b0..7755f9d 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '';
-canvas.height = '';
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
+  canvas.width = '';
+  canvas.height = '';
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js
index 93b6cd6..72fcd9f6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '';
-canvas.height = '';
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
-
+  canvas.width = '';
+  canvas.height = '';
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.html
index abfddf1..0a2f012 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '100e1';
-canvas.height = '100e1';
-_assertSame(canvas.width, 1000.0, "canvas.width", "1000.0");
-_assertSame(canvas.height, 1000.0, "canvas.height", "1000.0");
-t.done();
+  canvas.width = '100e1';
+  canvas.height = '100e1';
+  _assertSame(canvas.width, 1000.0, "canvas.width", "1000.0");
+  _assertSame(canvas.height, 1000.0, "canvas.height", "1000.0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.worker.js
index 79fb413..0b7d5f2 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.exp.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '100e1';
-canvas.height = '100e1';
-_assertSame(canvas.width, 1000.0, "canvas.width", "1000.0");
-_assertSame(canvas.height, 1000.0, "canvas.height", "1000.0");
-t.done();
-
+  canvas.width = '100e1';
+  canvas.height = '100e1';
+  _assertSame(canvas.width, 1000.0, "canvas.width", "1000.0");
+  _assertSame(canvas.height, 1000.0, "canvas.height", "1000.0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.html
index fba2890..5a899018 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '0x100';
-canvas.height = '0x100';
-_assertSame(canvas.width, 256, "canvas.width", "256");
-_assertSame(canvas.height, 256, "canvas.height", "256");
-t.done();
+  canvas.width = '0x100';
+  canvas.height = '0x100';
+  _assertSame(canvas.width, 256, "canvas.width", "256");
+  _assertSame(canvas.height, 256, "canvas.height", "256");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.worker.js
index b178c55..1edd0ed 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.hex.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '0x100';
-canvas.height = '0x100';
-_assertSame(canvas.width, 256, "canvas.width", "256");
-_assertSame(canvas.height, 256, "canvas.height", "256");
-t.done();
-
+  canvas.width = '0x100';
+  canvas.height = '0x100';
+  _assertSame(canvas.width, 256, "canvas.width", "256");
+  _assertSame(canvas.height, 256, "canvas.height", "256");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.html
index 3ffb674b..10d2e20 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '#!?'; });
-t.done();
+  assert_throws_js(TypeError, function() { canvas.width = '#!?'; });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.worker.js
index 6efd3ae..c7e18d1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '#!?'; });
-t.done();
-
+  assert_throws_js(TypeError, function() { canvas.width = '#!?'; });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html
index 56435547..2a7d5d12 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '-100'; });
-t.done();
+  assert_throws_js(TypeError, function() { canvas.width = '-100'; });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.worker.js
index a583752..9680f907 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '-100'; });
-t.done();
-
+  assert_throws_js(TypeError, function() { canvas.width = '-100'; });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.html
index d452217..3d9c2fb 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '0100';
-canvas.height = '0100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
+  canvas.width = '0100';
+  canvas.height = '0100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.worker.js
index 23f228e..2925361 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.octal.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '0100';
-canvas.height = '0100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
-
+  canvas.width = '0100';
+  canvas.height = '0100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html
index 4164123..821de43 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '  ';
-canvas.height = '  ';
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
+  canvas.width = '  ';
+  canvas.height = '  ';
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js
index a4b86624..e5fadf13 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '  ';
-canvas.height = '  ';
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
-
+  canvas.width = '  ';
+  canvas.height = '  ';
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.html
index d6288e9..58748103 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '100%'; });
-t.done();
+  assert_throws_js(TypeError, function() { canvas.width = '100%'; });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.worker.js
index e07fa60..acbd2a1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '100%'; });
-t.done();
-
+  assert_throws_js(TypeError, function() { canvas.width = '100%'; });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.html
index 79d531f..4555829 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '+100';
-canvas.height = '+100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
+  canvas.width = '+100';
+  canvas.height = '+100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.worker.js
index 240a6bd7..ecf6797 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.plus.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '+100';
-canvas.height = '+100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
-
+  canvas.width = '+100';
+  canvas.height = '+100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html
index 695afa5..b0d63a4 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '  100';
-canvas.height = '  100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
+  canvas.width = '  100';
+  canvas.height = '  100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js
index 2993020..11ac398 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '  100';
-canvas.height = '  100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
-
+  canvas.width = '  100';
+  canvas.height = '  100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.html
index fff231f..536ea90 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.html
@@ -17,11 +17,11 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '100#!?'; });
-t.done();
+  assert_throws_js(TypeError, function() { canvas.width = '100#!?'; });
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js
index f8d916c..1d1c5e7f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js
@@ -13,11 +13,10 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-assert_throws_js(TypeError, function() { canvas.width = '100#!?'; });
-t.done();
-
+  assert_throws_js(TypeError, function() { canvas.width = '100#!?'; });
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.html
index b7f0c4b..53a3a2e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '	100';
-canvas.height = '	100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
+  canvas.width = '	  100';
+  canvas.height = '	  100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js
index ea38398..26296e1 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '	100';
-canvas.height = '	100';
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-t.done();
-
+  canvas.width = '	  100';
+  canvas.height = '	  100';
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.html
index 9a84c95..1af0d2a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '0';
-canvas.height = '0';
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
+  canvas.width = '0';
+  canvas.height = '0';
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.worker.js
index 4d97a96..5348bf6 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.zero.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = '0';
-canvas.height = '0';
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
-
+  canvas.width = '0';
+  canvas.height = '0';
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.html
index 968dad9d..997bf97 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 120;
-canvas.height = 60;
-_assertSame(canvas.width, 120, "canvas.width", "120");
-_assertSame(canvas.height, 60, "canvas.height", "60");
-t.done();
+  canvas.width = 120;
+  canvas.height = 60;
+  _assertSame(canvas.width, 120, "canvas.width", "120");
+  _assertSame(canvas.height, 60, "canvas.height", "60");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js
index 3f8050d..9555f66 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 120;
-canvas.height = 60;
-_assertSame(canvas.width, 120, "canvas.width", "120");
-_assertSame(canvas.height, 60, "canvas.height", "60");
-t.done();
-
+  canvas.width = 120;
+  canvas.height = 60;
+  _assertSame(canvas.width, 120, "canvas.width", "120");
+  _assertSame(canvas.height, 60, "canvas.height", "60");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.html
index 5f31f69..50e9096f 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.html
@@ -17,14 +17,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js
index 4ace1f5..e412b7a 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js
@@ -13,14 +13,13 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-canvas.width = 0;
-canvas.height = 0;
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-t.done();
-
+  canvas.width = 0;
+  canvas.height = 0;
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.html
index 9f41e2e..46b8a05 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.html
@@ -17,15 +17,15 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var n = 2147483647; // 2^31 - 1, which should be supported by any sensible definition of "long"
-canvas.width = n;
-canvas.height = n;
-_assertSame(canvas.width, n, "canvas.width", "n");
-_assertSame(canvas.height, n, "canvas.height", "n");
-t.done();
+  var n = 2147483647; // 2^31 - 1, which should be supported by any sensible definition of "long"
+  canvas.width = n;
+  canvas.height = n;
+  _assertSame(canvas.width, n, "canvas.width", "n");
+  _assertSame(canvas.height, n, "canvas.height", "n");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.worker.js
index b20ff5496..6a5bb5e 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.worker.js
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.large.worker.js
@@ -13,15 +13,14 @@
 });
 t.step(function() {
 
-var canvas = new OffscreenCanvas(100, 50);
-var ctx = canvas.getContext('2d');
+  var canvas = new OffscreenCanvas(100, 50);
+  var ctx = canvas.getContext('2d');
 
-var n = 2147483647; // 2^31 - 1, which should be supported by any sensible definition of "long"
-canvas.width = n;
-canvas.height = n;
-_assertSame(canvas.width, n, "canvas.width", "n");
-_assertSame(canvas.height, n, "canvas.height", "n");
-t.done();
-
+  var n = 2147483647; // 2^31 - 1, which should be supported by any sensible definition of "long"
+  canvas.width = n;
+  canvas.height = n;
+  _assertSame(canvas.width, n, "canvas.width", "n");
+  _assertSame(canvas.height, n, "canvas.height", "n");
+  t.done();
 });
 done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/gentestutils.py b/third_party/blink/web_tests/external/wpt/html/canvas/tools/gentestutils.py
index 27412e4..8fa33e39 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/gentestutils.py
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/gentestutils.py
@@ -35,6 +35,7 @@
 import os
 import pathlib
 import sys
+import textwrap
 
 try:
     import cairocffi as cairo  # type: ignore
@@ -199,7 +200,8 @@
             r'@assert pixel .* 0,0,0,0;', test['code']):
         print('Probable incorrect pixel test in %s' % name)
 
-    code = _expand_test_code(test['code'])
+    code = _expand_test_code(test['code'].strip())
+    code = textwrap.indent(code, '  ')
 
     expectation_html = ''
     if 'expected' in test and test['expected'] is not None:
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/templates.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/templates.yaml
index cb11f76d..0806872 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/templates.yaml
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/templates.yaml
@@ -18,10 +18,11 @@
     });
     t.step(function() {
 
-    var canvas = new OffscreenCanvas(%(width)s, %(height)s);
-    var ctx = canvas.getContext(%(context_args)s);
+      var canvas = new OffscreenCanvas(%(width)s, %(height)s);
+      var ctx = canvas.getContext(%(context_args)s);
 
     %(code)s
+
     });
     </script>
 
@@ -42,8 +43,8 @@
     });
     t.step(function() {
 
-    var canvas = new OffscreenCanvas(%(width)s, %(height)s);
-    var ctx = canvas.getContext(%(context_args)s);
+      var canvas = new OffscreenCanvas(%(width)s, %(height)s);
+      var ctx = canvas.getContext(%(context_args)s);
 
     %(code)s
     });
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html
index b9d2601..51cf0a2 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html
@@ -19,10 +19,9 @@
 var t = async_test("checks CanvasRenderingContext2D prototype");
 _addTest(function(canvas, ctx) {
 
-_assertSame(Object.getPrototypeOf(CanvasRenderingContext2D.prototype), Object.prototype, "Object.getPrototypeOf(CanvasRenderingContext2D.prototype)", "Object.prototype");
-_assertSame(Object.getPrototypeOf(ctx), CanvasRenderingContext2D.prototype, "Object.getPrototypeOf(ctx)", "CanvasRenderingContext2D.prototype");
-t.done();
-
+  _assertSame(Object.getPrototypeOf(CanvasRenderingContext2D.prototype), Object.prototype, "Object.getPrototypeOf(CanvasRenderingContext2D.prototype)", "Object.prototype");
+  _assertSame(Object.getPrototypeOf(ctx), CanvasRenderingContext2D.prototype, "Object.getPrototypeOf(ctx)", "CanvasRenderingContext2D.prototype");
+  t.done();
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.readonly.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.readonly.html
index 7f735b94..4b9e6810 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.readonly.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.readonly.html
@@ -19,12 +19,11 @@
 var t = async_test("CanvasRenderingContext2D.canvas is readonly");
 _addTest(function(canvas, ctx) {
 
-var c = document.createElement('canvas');
-var d = ctx.canvas;
-_assertDifferent(c, d, "c", "d");
-ctx.canvas = c;
-_assertSame(ctx.canvas, d, "ctx.canvas", "d");
-
+  var c = document.createElement('canvas');
+  var d = ctx.canvas;
+  _assertDifferent(c, d, "c", "d");
+  ctx.canvas = c;
+  _assertSame(ctx.canvas, d, "ctx.canvas", "d");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.reference.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.reference.html
index dc84112..182a0170 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.reference.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.canvas.reference.html
@@ -19,8 +19,7 @@
 var t = async_test("CanvasRenderingContext2D.canvas refers back to its canvas");
 _addTest(function(canvas, ctx) {
 
-_assertSame(ctx.canvas, canvas, "ctx.canvas", "canvas");
-
+  _assertSame(ctx.canvas, canvas, "ctx.canvas", "canvas");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.exists.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.exists.html
index 30032a99..a26bc40 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.exists.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.exists.html
@@ -19,8 +19,7 @@
 var t = async_test("The 2D context is implemented");
 _addTest(function(canvas, ctx) {
 
-_assertDifferent(canvas.getContext('2d'), null, "canvas.getContext('2d')", "null");
-
+  _assertDifferent(canvas.getContext('2d'), null, "canvas.getContext('2d')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.cache.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.cache.html
index 18d70064..eb47929 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.cache.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.cache.html
@@ -19,13 +19,12 @@
 var t = async_test("The 2D context doesn't throw with extra getContext arguments (cached)");
 _addTest(function(canvas, ctx) {
 
-_assertDifferent(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null");
-_assertDifferent(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null");
-_assertDifferent(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null");
-_assertDifferent(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null");
-_assertDifferent(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null");
-_assertDifferent(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null");
-
+  _assertDifferent(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null");
+  _assertDifferent(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null");
+  _assertDifferent(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null");
+  _assertDifferent(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null");
+  _assertDifferent(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null");
+  _assertDifferent(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.create.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.create.html
index 980d103..0683e45 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.create.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.create.html
@@ -19,13 +19,12 @@
 var t = async_test("The 2D context doesn't throw with extra getContext arguments (new context)");
 _addTest(function(canvas, ctx) {
 
-_assertDifferent(document.createElement("canvas").getContext('2d', false, {}, [], 1, "2"), null, "document.createElement(\"canvas\").getContext('2d', false, {}, [], 1, \"2\")", "null");
-_assertDifferent(document.createElement("canvas").getContext('2d', 123), null, "document.createElement(\"canvas\").getContext('2d', 123)", "null");
-_assertDifferent(document.createElement("canvas").getContext('2d', "test"), null, "document.createElement(\"canvas\").getContext('2d', \"test\")", "null");
-_assertDifferent(document.createElement("canvas").getContext('2d', undefined), null, "document.createElement(\"canvas\").getContext('2d', undefined)", "null");
-_assertDifferent(document.createElement("canvas").getContext('2d', null), null, "document.createElement(\"canvas\").getContext('2d', null)", "null");
-_assertDifferent(document.createElement("canvas").getContext('2d', Symbol.hasInstance), null, "document.createElement(\"canvas\").getContext('2d', Symbol.hasInstance)", "null");
-
+  _assertDifferent(document.createElement("canvas").getContext('2d', false, {}, [], 1, "2"), null, "document.createElement(\"canvas\").getContext('2d', false, {}, [], 1, \"2\")", "null");
+  _assertDifferent(document.createElement("canvas").getContext('2d', 123), null, "document.createElement(\"canvas\").getContext('2d', 123)", "null");
+  _assertDifferent(document.createElement("canvas").getContext('2d', "test"), null, "document.createElement(\"canvas\").getContext('2d', \"test\")", "null");
+  _assertDifferent(document.createElement("canvas").getContext('2d', undefined), null, "document.createElement(\"canvas\").getContext('2d', undefined)", "null");
+  _assertDifferent(document.createElement("canvas").getContext('2d', null), null, "document.createElement(\"canvas\").getContext('2d', null)", "null");
+  _assertDifferent(document.createElement("canvas").getContext('2d', Symbol.hasInstance), null, "document.createElement(\"canvas\").getContext('2d', Symbol.hasInstance)", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.invalid.args.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.invalid.args.html
index ff592c9b..c3407d0 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.invalid.args.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.invalid.args.html
@@ -19,16 +19,15 @@
 var t = async_test("Calling getContext with invalid arguments.");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.getContext(''), null, "canvas.getContext('')", "null");
-_assertSame(canvas.getContext('2d#'), null, "canvas.getContext('2d#')", "null");
-_assertSame(canvas.getContext('This is clearly not a valid context name.'), null, "canvas.getContext('This is clearly not a valid context name.')", "null");
-_assertSame(canvas.getContext('2d\0'), null, "canvas.getContext('2d\\0')", "null");
-_assertSame(canvas.getContext('2\uFF44'), null, "canvas.getContext('2\\uFF44')", "null");
-_assertSame(canvas.getContext('2D'), null, "canvas.getContext('2D')", "null");
-assert_throws_js(TypeError, function() { canvas.getContext(); });
-_assertSame(canvas.getContext('null'), null, "canvas.getContext('null')", "null");
-_assertSame(canvas.getContext('undefined'), null, "canvas.getContext('undefined')", "null");
-
+  _assertSame(canvas.getContext(''), null, "canvas.getContext('')", "null");
+  _assertSame(canvas.getContext('2d#'), null, "canvas.getContext('2d#')", "null");
+  _assertSame(canvas.getContext('This is clearly not a valid context name.'), null, "canvas.getContext('This is clearly not a valid context name.')", "null");
+  _assertSame(canvas.getContext('2d\0'), null, "canvas.getContext('2d\\0')", "null");
+  _assertSame(canvas.getContext('2\uFF44'), null, "canvas.getContext('2\\uFF44')", "null");
+  _assertSame(canvas.getContext('2D'), null, "canvas.getContext('2D')", "null");
+  assert_throws_js(TypeError, function() { canvas.getContext(); });
+  _assertSame(canvas.getContext('null'), null, "canvas.getContext('null')", "null");
+  _assertSame(canvas.getContext('undefined'), null, "canvas.getContext('undefined')", "null");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html
index 93c1603..54c1fd1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html
@@ -19,12 +19,11 @@
 var t = async_test("getContext('2d') returns objects which share canvas state");
 _addTest(function(canvas, ctx) {
 
-var ctx2 = canvas.getContext('2d');
-ctx.fillStyle = '#f00';
-ctx2.fillStyle = '#0f0';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  var ctx2 = canvas.getContext('2d');
+  ctx.fillStyle = '#f00';
+  ctx2.fillStyle = '#0f0';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.unique.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.unique.html
index 8632dad..c6e8980a20 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.unique.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.unique.html
@@ -19,8 +19,7 @@
 var t = async_test("getContext('2d') returns the same object");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.getContext('2d'), canvas.getContext('2d'), "canvas.getContext('2d')", "canvas.getContext('2d')");
-
+  _assertSame(canvas.getContext('2d'), canvas.getContext('2d'), "canvas.getContext('2d')", "canvas.getContext('2d')");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.scaled-manual.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.scaled-manual.html
index ed91b71..28daf0b 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.scaled-manual.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.scaled-manual.html
@@ -19,11 +19,10 @@
 var t = async_test("CSS-scaled canvases get drawn correctly");
 _addTest(function(canvas, ctx) {
 
-ctx.fillStyle = '#00f';
-ctx.fillRect(0, 0, 50, 25);
-ctx.fillStyle = '#0ff';
-ctx.fillRect(0, 0, 25, 10);
-
+  ctx.fillStyle = '#00f';
+  ctx.fillRect(0, 0, 50, 25);
+  ctx.fillStyle = '#0ff';
+  ctx.fillRect(0, 0, 25, 10);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.exists.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.exists.html
index e7fa25c..e2c09e6 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.exists.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.exists.html
@@ -19,8 +19,7 @@
 var t = async_test("The 2D context interface is a property of 'window'");
 _addTest(function(canvas, ctx) {
 
-_assert(window.CanvasRenderingContext2D, "window.CanvasRenderingContext2D");
-
+  _assert(window.CanvasRenderingContext2D, "window.CanvasRenderingContext2D");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html
index 1cb5e48..151b40d 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.extend.html
@@ -19,15 +19,14 @@
 var t = async_test("Interface methods can be added");
 _addTest(function(canvas, ctx) {
 
-window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h)
-{
-    this.fillStyle = '#0f0';
-    this.fillRect(x, y, w, h);
-};
-ctx.fillStyle = '#f00';
-ctx.fillRectGreen(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h)
+  {
+      this.fillStyle = '#0f0';
+      this.fillRect(x, y, w, h);
+  };
+  ctx.fillStyle = '#f00';
+  ctx.fillRectGreen(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.prototype.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.prototype.html
index bd95dac..24ee5068 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.prototype.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.prototype.html
@@ -19,17 +19,16 @@
 var t = async_test("window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]], and its methods are [[Configurable]].");
 _addTest(function(canvas, ctx) {
 
-_assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype");
-_assert(window.CanvasRenderingContext2D.prototype.fill, "window.CanvasRenderingContext2D.prototype.fill");
-window.CanvasRenderingContext2D.prototype = null;
-_assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype");
-delete window.CanvasRenderingContext2D.prototype;
-_assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype");
-window.CanvasRenderingContext2D.prototype.fill = 1;
-_assertSame(window.CanvasRenderingContext2D.prototype.fill, 1, "window.CanvasRenderingContext2D.prototype.fill", "1");
-delete window.CanvasRenderingContext2D.prototype.fill;
-_assertSame(window.CanvasRenderingContext2D.prototype.fill, undefined, "window.CanvasRenderingContext2D.prototype.fill", "undefined");
-
+  _assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype");
+  _assert(window.CanvasRenderingContext2D.prototype.fill, "window.CanvasRenderingContext2D.prototype.fill");
+  window.CanvasRenderingContext2D.prototype = null;
+  _assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype");
+  delete window.CanvasRenderingContext2D.prototype;
+  _assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype");
+  window.CanvasRenderingContext2D.prototype.fill = 1;
+  _assertSame(window.CanvasRenderingContext2D.prototype.fill, 1, "window.CanvasRenderingContext2D.prototype.fill", "1");
+  delete window.CanvasRenderingContext2D.prototype.fill;
+  _assertSame(window.CanvasRenderingContext2D.prototype.fill, undefined, "window.CanvasRenderingContext2D.prototype.fill", "undefined");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html
index 47aa5bb82..aa0ec1cf 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.type.replace.html
@@ -19,16 +19,15 @@
 var t = async_test("Interface methods can be overridden");
 _addTest(function(canvas, ctx) {
 
-var fillRect = window.CanvasRenderingContext2D.prototype.fillRect;
-window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h)
-{
-    this.fillStyle = '#0f0';
-    fillRect.call(this, x, y, w, h);
-};
-ctx.fillStyle = '#f00';
-ctx.fillRect(0, 0, 100, 50);
-_assertPixel(canvas, 50,25, 0,255,0,255);
-
+  var fillRect = window.CanvasRenderingContext2D.prototype.fillRect;
+  window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h)
+  {
+      this.fillStyle = '#0f0';
+      fillRect.call(this, x, y, w, h);
+  };
+  ctx.fillStyle = '#f00';
+  ctx.fillRect(0, 0, 100, 50);
+  _assertPixel(canvas, 50,25, 0,255,0,255);
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.2dstate.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.2dstate.html
index d0fd3d6..a99cb5d3 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.2dstate.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.2dstate.html
@@ -19,84 +19,83 @@
 var t = async_test("Resetting the canvas state resets 2D state variables");
 _addTest(function(canvas, ctx) {
 
-canvas.width = 100;
-var default_val;
+  canvas.width = 100;
+  var default_val;
 
-default_val = ctx.strokeStyle;
-ctx.strokeStyle = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val");
+  default_val = ctx.strokeStyle;
+  ctx.strokeStyle = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val");
 
-default_val = ctx.fillStyle;
-ctx.fillStyle = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val");
+  default_val = ctx.fillStyle;
+  ctx.fillStyle = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val");
 
-default_val = ctx.globalAlpha;
-ctx.globalAlpha = 0.5;
-canvas.width = 100;
-_assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val");
+  default_val = ctx.globalAlpha;
+  ctx.globalAlpha = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val");
 
-default_val = ctx.lineWidth;
-ctx.lineWidth = 0.5;
-canvas.width = 100;
-_assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val");
+  default_val = ctx.lineWidth;
+  ctx.lineWidth = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val");
 
-default_val = ctx.lineCap;
-ctx.lineCap = "round";
-canvas.width = 100;
-_assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val");
+  default_val = ctx.lineCap;
+  ctx.lineCap = "round";
+  canvas.width = 100;
+  _assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val");
 
-default_val = ctx.lineJoin;
-ctx.lineJoin = "round";
-canvas.width = 100;
-_assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val");
+  default_val = ctx.lineJoin;
+  ctx.lineJoin = "round";
+  canvas.width = 100;
+  _assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val");
 
-default_val = ctx.miterLimit;
-ctx.miterLimit = 0.5;
-canvas.width = 100;
-_assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val");
+  default_val = ctx.miterLimit;
+  ctx.miterLimit = 0.5;
+  canvas.width = 100;
+  _assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val");
 
-default_val = ctx.shadowOffsetX;
-ctx.shadowOffsetX = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val");
+  default_val = ctx.shadowOffsetX;
+  ctx.shadowOffsetX = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val");
 
-default_val = ctx.shadowOffsetY;
-ctx.shadowOffsetY = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val");
+  default_val = ctx.shadowOffsetY;
+  ctx.shadowOffsetY = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val");
 
-default_val = ctx.shadowBlur;
-ctx.shadowBlur = 5;
-canvas.width = 100;
-_assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val");
+  default_val = ctx.shadowBlur;
+  ctx.shadowBlur = 5;
+  canvas.width = 100;
+  _assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val");
 
-default_val = ctx.shadowColor;
-ctx.shadowColor = "#ff0000";
-canvas.width = 100;
-_assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val");
+  default_val = ctx.shadowColor;
+  ctx.shadowColor = "#ff0000";
+  canvas.width = 100;
+  _assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val");
 
-default_val = ctx.globalCompositeOperation;
-ctx.globalCompositeOperation = "copy";
-canvas.width = 100;
-_assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val");
+  default_val = ctx.globalCompositeOperation;
+  ctx.globalCompositeOperation = "copy";
+  canvas.width = 100;
+  _assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val");
 
-default_val = ctx.font;
-ctx.font = "25px serif";
-canvas.width = 100;
-_assertSame(ctx.font, default_val, "ctx.font", "default_val");
+  default_val = ctx.font;
+  ctx.font = "25px serif";
+  canvas.width = 100;
+  _assertSame(ctx.font, default_val, "ctx.font", "default_val");
 
-default_val = ctx.textAlign;
-ctx.textAlign = "center";
-canvas.width = 100;
-_assertSame(ctx.textAlign, default_val, "ctx.textAlign", "default_val");
+  default_val = ctx.textAlign;
+  ctx.textAlign = "center";
+  canvas.width = 100;
+  _assertSame(ctx.textAlign, default_val, "ctx.textAlign", "default_val");
 
-default_val = ctx.textBaseline;
-ctx.textBaseline = "bottom";
-canvas.width = 100;
-_assertSame(ctx.textBaseline, default_val, "ctx.textBaseline", "default_val");
-
+  default_val = ctx.textBaseline;
+  ctx.textBaseline = "bottom";
+  canvas.width = 100;
+  _assertSame(ctx.textBaseline, default_val, "ctx.textBaseline", "default_val");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.decimal.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.decimal.html
index d1954aa..613cf0e1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.decimal.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.decimal.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100.999', "canvas.getAttribute('width')", "'100.999'");
-_assertSame(canvas.getAttribute('height'), '100.999', "canvas.getAttribute('height')", "'100.999'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100.999', "canvas.getAttribute('width')", "'100.999'");
+  _assertSame(canvas.getAttribute('height'), '100.999', "canvas.getAttribute('height')", "'100.999'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.em.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.em.html
index 3fc93a5c..21d9e6a 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.em.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.em.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100em', "canvas.getAttribute('width')", "'100em'");
-_assertSame(canvas.getAttribute('height'), '100em', "canvas.getAttribute('height')", "'100em'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100em', "canvas.getAttribute('width')", "'100em'");
+  _assertSame(canvas.getAttribute('height'), '100em', "canvas.getAttribute('height')", "'100em'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.empty.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.empty.html
index df58fcb..7198ccd 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.empty.html
@@ -19,11 +19,10 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '', "canvas.getAttribute('width')", "''");
-_assertSame(canvas.getAttribute('height'), '', "canvas.getAttribute('height')", "''");
-
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '', "canvas.getAttribute('width')", "''");
+  _assertSame(canvas.getAttribute('height'), '', "canvas.getAttribute('height')", "''");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.exp.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.exp.html
index f59ea05..c609939 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.exp.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.exp.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100e1', "canvas.getAttribute('width')", "'100e1'");
-_assertSame(canvas.getAttribute('height'), '100e1', "canvas.getAttribute('height')", "'100e1'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100e1', "canvas.getAttribute('width')", "'100e1'");
+  _assertSame(canvas.getAttribute('height'), '100e1', "canvas.getAttribute('height')", "'100e1'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.hex.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.hex.html
index 1b9b741..a00bb3c 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.hex.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.hex.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
-_assertSame(canvas.getAttribute('width'), '0x100', "canvas.getAttribute('width')", "'0x100'");
-_assertSame(canvas.getAttribute('height'), '0x100', "canvas.getAttribute('height')", "'0x100'");
-
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
+  _assertSame(canvas.getAttribute('width'), '0x100', "canvas.getAttribute('width')", "'0x100'");
+  _assertSame(canvas.getAttribute('height'), '0x100', "canvas.getAttribute('height')", "'0x100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.junk.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.junk.html
index 72e2edb..7b4f837 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.junk.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.junk.html
@@ -19,11 +19,10 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '#!?', "canvas.getAttribute('width')", "'#!?'");
-_assertSame(canvas.getAttribute('height'), '#!?', "canvas.getAttribute('height')", "'#!?'");
-
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '#!?', "canvas.getAttribute('width')", "'#!?'");
+  _assertSame(canvas.getAttribute('height'), '#!?', "canvas.getAttribute('height')", "'#!?'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.minus.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.minus.html
index 779879d..6d6560b 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.minus.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.minus.html
@@ -19,11 +19,10 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '-100', "canvas.getAttribute('width')", "'-100'");
-_assertSame(canvas.getAttribute('height'), '-100', "canvas.getAttribute('height')", "'-100'");
-
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '-100', "canvas.getAttribute('width')", "'-100'");
+  _assertSame(canvas.getAttribute('height'), '-100', "canvas.getAttribute('height')", "'-100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.octal.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.octal.html
index b795d16..e1f42ea 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.octal.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.octal.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '0100', "canvas.getAttribute('width')", "'0100'");
-_assertSame(canvas.getAttribute('height'), '0100', "canvas.getAttribute('height')", "'0100'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '0100', "canvas.getAttribute('width')", "'0100'");
+  _assertSame(canvas.getAttribute('height'), '0100', "canvas.getAttribute('height')", "'0100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.onlyspace.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.onlyspace.html
index 3a12532..20721dcc 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.onlyspace.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.onlyspace.html
@@ -19,11 +19,10 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '  ', "canvas.getAttribute('width')", "'  '");
-_assertSame(canvas.getAttribute('height'), '  ', "canvas.getAttribute('height')", "'  '");
-
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '  ', "canvas.getAttribute('width')", "'  '");
+  _assertSame(canvas.getAttribute('height'), '  ', "canvas.getAttribute('height')", "'  '");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.percent.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.percent.html
index bcaaa0e8..860703c 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.percent.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100%', "canvas.getAttribute('width')", "'100%'");
-_assertSame(canvas.getAttribute('height'), '100%', "canvas.getAttribute('height')", "'100%'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100%', "canvas.getAttribute('width')", "'100%'");
+  _assertSame(canvas.getAttribute('height'), '100%', "canvas.getAttribute('height')", "'100%'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.plus.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.plus.html
index 5ef71702..2b600941 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.plus.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.plus.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '+100', "canvas.getAttribute('width')", "'+100'");
-_assertSame(canvas.getAttribute('height'), '+100', "canvas.getAttribute('height')", "'+100'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '+100', "canvas.getAttribute('width')", "'+100'");
+  _assertSame(canvas.getAttribute('height'), '+100', "canvas.getAttribute('height')", "'+100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.html
index 0f12f4dd..34cae4d4 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '  100', "canvas.getAttribute('width')", "'  100'");
-_assertSame(canvas.getAttribute('height'), '  100', "canvas.getAttribute('height')", "'  100'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '  100', "canvas.getAttribute('width')", "'  100'");
+  _assertSame(canvas.getAttribute('height'), '  100', "canvas.getAttribute('height')", "'  100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.html
index 287887b..e2b92ee 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100#!?', "canvas.getAttribute('width')", "'100#!?'");
-_assertSame(canvas.getAttribute('height'), '100#!?', "canvas.getAttribute('height')", "'100#!?'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100#!?', "canvas.getAttribute('width')", "'100#!?'");
+  _assertSame(canvas.getAttribute('height'), '100#!?', "canvas.getAttribute('height')", "'100#!?'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
index 13c5fbbea..c7a76f9 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
@@ -21,12 +21,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '\r\n\t\x0c100', "canvas.getAttribute('width')", "'\\r\\n\\t\\x0c100'");
-_assertSame(canvas.getAttribute('height'), '\r\n\t\x0c100', "canvas.getAttribute('height')", "'\\r\\n\\t\\x0c100'");
-
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '\r\n\t\x0c100', "canvas.getAttribute('width')", "'\\r\\n\\t\\x0c100'");
+  _assertSame(canvas.getAttribute('height'), '\r\n\t\x0c100', "canvas.getAttribute('height')", "'\\r\\n\\t\\x0c100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html
index fa05603..0f7a0415 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html
@@ -19,12 +19,11 @@
 var t = async_test("Parsing of non-negative integers");
 _addTest(function(canvas, ctx) {
 
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
-_assertSame(canvas.getAttribute('width'), '0', "canvas.getAttribute('width')", "'0'");
-_assertSame(canvas.getAttribute('height'), '0', "canvas.getAttribute('height')", "'0'");
-
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
+  _assertSame(canvas.getAttribute('width'), '0', "canvas.getAttribute('width')", "'0'");
+  _assertSame(canvas.getAttribute('height'), '0', "canvas.getAttribute('height')", "'0'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.decimal.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.decimal.html
index e2eaa1f..9f0b4b1d 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.decimal.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.decimal.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '100.999');
-canvas.setAttribute('height', '100.999');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100.999', "canvas.getAttribute('width')", "'100.999'");
-_assertSame(canvas.getAttribute('height'), '100.999', "canvas.getAttribute('height')", "'100.999'");
-
+  canvas.setAttribute('width', '100.999');
+  canvas.setAttribute('height', '100.999');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100.999', "canvas.getAttribute('width')", "'100.999'");
+  _assertSame(canvas.getAttribute('height'), '100.999', "canvas.getAttribute('height')", "'100.999'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.em.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.em.html
index a806ad5..df0eee7 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.em.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.em.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '100em');
-canvas.setAttribute('height', '100em');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100em', "canvas.getAttribute('width')", "'100em'");
-_assertSame(canvas.getAttribute('height'), '100em', "canvas.getAttribute('height')", "'100em'");
-
+  canvas.setAttribute('width', '100em');
+  canvas.setAttribute('height', '100em');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100em', "canvas.getAttribute('width')", "'100em'");
+  _assertSame(canvas.getAttribute('height'), '100em', "canvas.getAttribute('height')", "'100em'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.empty.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.empty.html
index fc9690d..37e02142 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.empty.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.empty.html
@@ -19,13 +19,12 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '');
-canvas.setAttribute('height', '');
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '', "canvas.getAttribute('width')", "''");
-_assertSame(canvas.getAttribute('height'), '', "canvas.getAttribute('height')", "''");
-
+  canvas.setAttribute('width', '');
+  canvas.setAttribute('height', '');
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '', "canvas.getAttribute('width')", "''");
+  _assertSame(canvas.getAttribute('height'), '', "canvas.getAttribute('height')", "''");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.exp.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.exp.html
index c36d3eca..943b98b 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.exp.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.exp.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '100e1');
-canvas.setAttribute('height', '100e1');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100e1', "canvas.getAttribute('width')", "'100e1'");
-_assertSame(canvas.getAttribute('height'), '100e1', "canvas.getAttribute('height')", "'100e1'");
-
+  canvas.setAttribute('width', '100e1');
+  canvas.setAttribute('height', '100e1');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100e1', "canvas.getAttribute('width')", "'100e1'");
+  _assertSame(canvas.getAttribute('height'), '100e1', "canvas.getAttribute('height')", "'100e1'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.hex.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.hex.html
index ee3669a..a73ff5ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.hex.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.hex.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '0x100');
-canvas.setAttribute('height', '0x100');
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
-_assertSame(canvas.getAttribute('width'), '0x100', "canvas.getAttribute('width')", "'0x100'");
-_assertSame(canvas.getAttribute('height'), '0x100', "canvas.getAttribute('height')", "'0x100'");
-
+  canvas.setAttribute('width', '0x100');
+  canvas.setAttribute('height', '0x100');
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
+  _assertSame(canvas.getAttribute('width'), '0x100', "canvas.getAttribute('width')", "'0x100'");
+  _assertSame(canvas.getAttribute('height'), '0x100', "canvas.getAttribute('height')", "'0x100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.junk.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.junk.html
index e04166b..607892d 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.junk.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.junk.html
@@ -19,13 +19,12 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '#!?');
-canvas.setAttribute('height', '#!?');
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '#!?', "canvas.getAttribute('width')", "'#!?'");
-_assertSame(canvas.getAttribute('height'), '#!?', "canvas.getAttribute('height')", "'#!?'");
-
+  canvas.setAttribute('width', '#!?');
+  canvas.setAttribute('height', '#!?');
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '#!?', "canvas.getAttribute('width')", "'#!?'");
+  _assertSame(canvas.getAttribute('height'), '#!?', "canvas.getAttribute('height')", "'#!?'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.minus.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.minus.html
index 159a2934..4fd49e5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.minus.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.minus.html
@@ -19,13 +19,12 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '-100');
-canvas.setAttribute('height', '-100');
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '-100', "canvas.getAttribute('width')", "'-100'");
-_assertSame(canvas.getAttribute('height'), '-100', "canvas.getAttribute('height')", "'-100'");
-
+  canvas.setAttribute('width', '-100');
+  canvas.setAttribute('height', '-100');
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '-100', "canvas.getAttribute('width')", "'-100'");
+  _assertSame(canvas.getAttribute('height'), '-100', "canvas.getAttribute('height')", "'-100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.octal.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.octal.html
index 9419b44..d841413 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.octal.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.octal.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '0100');
-canvas.setAttribute('height', '0100');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '0100', "canvas.getAttribute('width')", "'0100'");
-_assertSame(canvas.getAttribute('height'), '0100', "canvas.getAttribute('height')", "'0100'");
-
+  canvas.setAttribute('width', '0100');
+  canvas.setAttribute('height', '0100');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '0100', "canvas.getAttribute('width')", "'0100'");
+  _assertSame(canvas.getAttribute('height'), '0100', "canvas.getAttribute('height')", "'0100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.onlyspace.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.onlyspace.html
index 3e13429..7959c30 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.onlyspace.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.onlyspace.html
@@ -19,13 +19,12 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '  ');
-canvas.setAttribute('height', '  ');
-_assertSame(canvas.width, 300, "canvas.width", "300");
-_assertSame(canvas.height, 150, "canvas.height", "150");
-_assertSame(canvas.getAttribute('width'), '  ', "canvas.getAttribute('width')", "'  '");
-_assertSame(canvas.getAttribute('height'), '  ', "canvas.getAttribute('height')", "'  '");
-
+  canvas.setAttribute('width', '  ');
+  canvas.setAttribute('height', '  ');
+  _assertSame(canvas.width, 300, "canvas.width", "300");
+  _assertSame(canvas.height, 150, "canvas.height", "150");
+  _assertSame(canvas.getAttribute('width'), '  ', "canvas.getAttribute('width')", "'  '");
+  _assertSame(canvas.getAttribute('height'), '  ', "canvas.getAttribute('height')", "'  '");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.percent.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.percent.html
index 03520e8..6fed0cda 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.percent.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.percent.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '100%');
-canvas.setAttribute('height', '100%');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100%', "canvas.getAttribute('width')", "'100%'");
-_assertSame(canvas.getAttribute('height'), '100%', "canvas.getAttribute('height')", "'100%'");
-
+  canvas.setAttribute('width', '100%');
+  canvas.setAttribute('height', '100%');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100%', "canvas.getAttribute('width')", "'100%'");
+  _assertSame(canvas.getAttribute('height'), '100%', "canvas.getAttribute('height')", "'100%'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.plus.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.plus.html
index bcf2492..4be39bf1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.plus.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.plus.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '+100');
-canvas.setAttribute('height', '+100');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '+100', "canvas.getAttribute('width')", "'+100'");
-_assertSame(canvas.getAttribute('height'), '+100', "canvas.getAttribute('height')", "'+100'");
-
+  canvas.setAttribute('width', '+100');
+  canvas.setAttribute('height', '+100');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '+100', "canvas.getAttribute('width')", "'+100'");
+  _assertSame(canvas.getAttribute('height'), '+100', "canvas.getAttribute('height')", "'+100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.space.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.space.html
index 5920f67..3cc0078 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.space.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.space.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '  100');
-canvas.setAttribute('height', '  100');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '  100', "canvas.getAttribute('width')", "'  100'");
-_assertSame(canvas.getAttribute('height'), '  100', "canvas.getAttribute('height')", "'  100'");
-
+  canvas.setAttribute('width', '  100');
+  canvas.setAttribute('height', '  100');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '  100', "canvas.getAttribute('width')", "'  100'");
+  _assertSame(canvas.getAttribute('height'), '  100', "canvas.getAttribute('height')", "'  100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.html
index cb76b7a..4c9b7ce 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '100#!?');
-canvas.setAttribute('height', '100#!?');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '100#!?', "canvas.getAttribute('width')", "'100#!?'");
-_assertSame(canvas.getAttribute('height'), '100#!?', "canvas.getAttribute('height')", "'100#!?'");
-
+  canvas.setAttribute('width', '100#!?');
+  canvas.setAttribute('height', '100#!?');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '100#!?', "canvas.getAttribute('width')", "'100#!?'");
+  _assertSame(canvas.getAttribute('height'), '100#!?', "canvas.getAttribute('height')", "'100#!?'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html
index b7c0ed6..8f6ecc9 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '\r\n\t\x0c100');
-canvas.setAttribute('height', '\r\n\t\x0c100');
-_assertSame(canvas.width, 100, "canvas.width", "100");
-_assertSame(canvas.height, 100, "canvas.height", "100");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
-_assertSame(canvas.getAttribute('width'), '\r\n\t\x0c100', "canvas.getAttribute('width')", "'\\r\\n\\t\\x0c100'");
-_assertSame(canvas.getAttribute('height'), '\r\n\t\x0c100', "canvas.getAttribute('height')", "'\\r\\n\\t\\x0c100'");
-
+  canvas.setAttribute('width', '\r\n\t\x0c100');
+  canvas.setAttribute('height', '\r\n\t\x0c100');
+  _assertSame(canvas.width, 100, "canvas.width", "100");
+  _assertSame(canvas.height, 100, "canvas.height", "100");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "100px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"100px\"");
+  _assertSame(canvas.getAttribute('width'), '\r\n\t\x0c100', "canvas.getAttribute('width')", "'\\r\\n\\t\\x0c100'");
+  _assertSame(canvas.getAttribute('height'), '\r\n\t\x0c100', "canvas.getAttribute('height')", "'\\r\\n\\t\\x0c100'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.zero.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.zero.html
index 0a919e9..2bbad823 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.zero.html
@@ -19,14 +19,13 @@
 var t = async_test("Parsing of non-negative integers in setAttribute");
 _addTest(function(canvas, ctx) {
 
-canvas.setAttribute('width', '0');
-canvas.setAttribute('height', '0');
-_assertSame(canvas.width, 0, "canvas.width", "0");
-_assertSame(canvas.height, 0, "canvas.height", "0");
-_assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
-_assertSame(canvas.getAttribute('width'), '0', "canvas.getAttribute('width')", "'0'");
-_assertSame(canvas.getAttribute('height'), '0', "canvas.getAttribute('height')", "'0'");
-
+  canvas.setAttribute('width', '0');
+  canvas.setAttribute('height', '0');
+  _assertSame(canvas.width, 0, "canvas.width", "0");
+  _assertSame(canvas.height, 0, "canvas.height", "0");
+  _assertSame(window.getComputedStyle(canvas, null).getPropertyValue("width"), "0px", "window.getComputedStyle(canvas, null).getPropertyValue(\"width\")", "\"0px\"");
+  _assertSame(canvas.getAttribute('width'), '0', "canvas.getAttribute('width')", "'0'");
+  _assertSame(canvas.getAttribute('height'), '0', "canvas.getAttribute('height')", "'0'");
 
 });
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https-expected.txt b/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https-expected.txt
new file mode 100644
index 0000000..1ad81d46
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+PASS Called the notification constructor with one argument.
+FAIL Constructing a notification without a NotificationOptions defaults to null. assert_equals: Expected null by default expected (object) null but got (boolean) false
+FAIL constructing a notification with a NotificationOptions dictionary correctly sets and reflects the silent attribute. assert_equals: Expected silent to be null when initialized with null. expected (object) null but got (boolean) false
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html b/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html
index 3f704de..df959b92 100644
--- a/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html
+++ b/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html
@@ -13,4 +13,34 @@
         notification.close()
     }
 }, "Called the notification constructor with one argument.")
+
+test(() => {
+    assert_equals(
+        new Notification("a").silent,
+        null,
+        "Expected null by default"
+    );
+}, "Constructing a notification without a NotificationOptions defaults to null.");
+
+test(() => {
+    for (const silent of [null, undefined]) {
+        assert_equals(
+            new Notification("a", { silent }).silent,
+            null,
+            `Expected silent to be null when initialized with ${silent}.`
+        );
+    }
+    for (const silent of [true, 1, 100, {}, [], "a string"]) {
+        assert_true(
+            new Notification("a", { silent }).silent,
+            `Expected silent to be true when initialized with ${silent}.`
+        );
+    }
+    for (const silent of [false, 0, "", NaN]) {
+        assert_false(
+            new Notification("a", { silent }).silent,
+            `Expected silent to be false when initialized with ${silent}.`
+        );
+    }
+}, "constructing a notification with a NotificationOptions dictionary correctly sets and reflects the silent attribute.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html.ini b/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html.ini
new file mode 100644
index 0000000..3cf1ba2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/notifications/constructor-basic.https.html.ini
@@ -0,0 +1,6 @@
+[constructor-basic.https.html]
+  [Constructing a notification without a NotificationOptions defaults to null.]
+    expected: FAIL
+
+  [constructing a notification with a NotificationOptions dictionary correctly sets and reflects the silent attribute.]
+    expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/preload/modulepreload-as.html.ini b/third_party/blink/web_tests/external/wpt/preload/modulepreload-as.html.ini
index fe42326..cf11479 100644
--- a/third_party/blink/web_tests/external/wpt/preload/modulepreload-as.html.ini
+++ b/third_party/blink/web_tests/external/wpt/preload/modulepreload-as.html.ini
@@ -1,184 +1,163 @@
 [modulepreload-as.html]
   expected:
-    if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [ERROR, TIMEOUT]
-    if (product == "content_shell") and (os == "mac") and (port == "mac12"): OK
-    if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): OK
-    if (product == "content_shell") and (os == "mac") and (port == "mac11"): OK
+    if (product == "content_shell") and (os == "mac") and (port == "mac13"): [ERROR, OK]
+    if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [ERROR, OK]
+    if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): ERROR
+    if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [ERROR, TIMEOUT]
+    if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): ERROR
     if (product == "content_shell") and (os == "win"): TIMEOUT
-    if product == "chrome": [ERROR, TIMEOUT]
-    ERROR
-  [Modulepreload with as=""]
-    expected:
-      if product == "chrome": [PASS, TIMEOUT]
-
+    if product == "chrome": ERROR
   [Modulepreload with as="audio"]
     expected:
-      if product == "chrome": [FAIL, NOTRUN, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
       FAIL
 
   [Modulepreload with as="audioworklet"]
-    expected:
-      if product == "chrome": [FAIL, NOTRUN]
-      FAIL
+    expected: FAIL
 
   [Modulepreload with as="document"]
     expected:
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [FAIL, PASS]
-      if product == "chrome": [FAIL, PASS, NOTRUN]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
       FAIL
 
   [Modulepreload with as="embed"]
     expected:
-      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [PASS, FAIL]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [FAIL, PASS]
-      if product == "chrome": [PASS, FAIL, NOTRUN]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [FAIL, PASS]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="fetch"]
     expected:
-      if (product == "content_shell") and (os == "win") and (port == "win11"): PASS
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): PASS
-      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): PASS
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [PASS, FAIL]
-      if product == "chrome": [PASS, NOTRUN]
-      FAIL
+      if (product == "content_shell") and (os == "win") and (port == "win10.20h2"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
 
   [Modulepreload with as="font"]
     expected:
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
       if (product == "content_shell") and (os == "win") and (port == "win11"): PASS
-      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [PASS, FAIL]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
-      if product == "chrome": [FAIL, NOTRUN, PASS]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [FAIL, PASS]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
       FAIL
 
   [Modulepreload with as="frame"]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): PASS
+      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [FAIL, PASS]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
       if (product == "content_shell") and (os == "win"): PASS
-      if product == "chrome": [PASS, FAIL, NOTRUN]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="iMaGe"]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
       if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
-      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
       if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [PASS, FAIL]
-      if product == "chrome": [PASS, NOTRUN]
+      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
 
   [Modulepreload with as="iframe"]
     expected:
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [PASS, FAIL]
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
-      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): PASS
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [FAIL, PASS]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
       if (product == "content_shell") and (os == "win"): PASS
-      if product == "chrome": [PASS, FAIL, NOTRUN]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="image"]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [PASS, FAIL]
-      if (product == "content_shell") and (os == "win"): PASS
-      if (product == "content_shell") and (os == "linux"): PASS
-      if product == "chrome": [PASS, FAIL, NOTRUN]
-      FAIL
+      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
 
   [Modulepreload with as="invalid-dest"]
-    expected:
-      if product == "chrome": [FAIL, NOTRUN]
-      FAIL
+    expected: FAIL
 
   [Modulepreload with as="manifest"]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [PASS, FAIL]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
       if (product == "content_shell") and (os == "win"): PASS
-      if product == "chrome": [PASS, FAIL, NOTRUN]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="object"]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
       if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
-      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
       if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
-      if product == "chrome": [PASS, NOTRUN]
+      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [PASS, FAIL]
 
   [Modulepreload with as="paintworklet"]
-    expected:
-      if product == "chrome": [FAIL, NOTRUN]
-      FAIL
+    expected: FAIL
 
   [Modulepreload with as="report"]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
-      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
       if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
-      if product == "chrome": [PASS, NOTRUN]
-
-  [Modulepreload with as="sCrIpT"]
-    expected:
-      if product == "chrome": [PASS, NOTRUN]
-
-  [Modulepreload with as="script"]
-    expected:
-      if product == "chrome": [PASS, NOTRUN]
+      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
 
   [Modulepreload with as="serviceworker"]
-    expected:
-      if product == "chrome": [FAIL, NOTRUN]
-      FAIL
+    expected: FAIL
 
   [Modulepreload with as="sharedworker"]
-    expected:
-      if product == "chrome": [FAIL, NOTRUN]
-      FAIL
+    expected: FAIL
 
   [Modulepreload with as="style"]
     expected:
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [FAIL, PASS]
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [PASS, FAIL]
-      if product == "chrome": [PASS, FAIL, NOTRUN]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [FAIL, PASS]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="track"]
     expected:
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [PASS, FAIL]
-      if product == "chrome": [PASS, NOTRUN, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [FAIL, PASS]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="video"]
     expected:
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): PASS
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
-      if product == "chrome": [PASS, NOTRUN, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [FAIL, PASS]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="webidentity"]
     expected:
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): PASS
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
-      if product == "chrome": [PASS, NOTRUN, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): [FAIL, PASS]
+      if product == "chrome": PASS
       FAIL
 
   [Modulepreload with as="worker"]
-    expected:
-      if product == "chrome": [FAIL, NOTRUN]
-      FAIL
+    expected: FAIL
 
   [Modulepreload with as="xslt"]
     expected:
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [PASS, FAIL]
       if (product == "content_shell") and (os == "linux") and (flag_specific == ""): PASS
-      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL]
-      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
-      if product == "chrome": [PASS, NOTRUN, FAIL]
+      if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): PASS
+      if product == "chrome": PASS
       FAIL
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini
index 0f2204c..5a9efe7 100644
--- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini
+++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini
@@ -1,6 +1,9 @@
 [unregister-immediately-during-extendable-events.https.html]
-  expected: TIMEOUT
+  expected:
+    if (product == "content_shell") and (os == "mac") and (port == "mac12"): [OK, TIMEOUT]
+    TIMEOUT
   [Clear-Site-Data must fail pending subresource fetch events.]
     expected:
+      if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
       if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
       TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/video-rvfc/request-video-frame-callback-webrtc.https.html.ini b/third_party/blink/web_tests/external/wpt/video-rvfc/request-video-frame-callback-webrtc.https.html.ini
index b19357b..ca1de5d 100644
--- a/third_party/blink/web_tests/external/wpt/video-rvfc/request-video-frame-callback-webrtc.https.html.ini
+++ b/third_party/blink/web_tests/external/wpt/video-rvfc/request-video-frame-callback-webrtc.https.html.ini
@@ -1,10 +1,12 @@
 [request-video-frame-callback-webrtc.https.html]
   expected:
     if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): TIMEOUT
-    if (product == "content_shell") and (os == "mac") and (port == "mac11"): [TIMEOUT, OK]
+    if (product == "content_shell") and (os == "mac") and (port == "mac11"): TIMEOUT
   [Test video.requestVideoFrameCallback() parameters for WebRTC applications.]
     expected:
-      if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
-      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [FAIL, PASS]
-      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
       if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL
+      if (product == "content_shell") and (os == "linux") and (flag_specific == ""): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): [FAIL, PASS]
+      if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
+      if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https-expected.txt
index 653ebcd..39db0333 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https-expected.txt
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https-expected.txt
@@ -111,6 +111,7 @@
             proxyStart : -1
             pushEnd : 0
             pushStart : 0
+            receiveHeadersStart : <number>
             receiveHeadersEnd : <number>
             requestTime : <number>
             sendEnd : <number>
@@ -260,6 +261,7 @@
             proxyStart : -1
             pushEnd : 0
             pushStart : 0
+            receiveHeadersStart : <number>
             receiveHeadersEnd : <number>
             requestTime : <number>
             sendEnd : <number>
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https.js b/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https.js
index ee4384e8..532eb77 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https.js
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/prefetch/request-will-be-sent.https.js
@@ -33,7 +33,7 @@
 
   let prefetchRequestId = await testPromise.then((result) => {
     let prefetchRequestId = undefined;
-    const stabilizeNames = [...TestRunner.stabilizeNames, 'wallTime', 'requestTime', 'responseTime', 'Date', 'receiveHeadersEnd', 'sendStart', 'sendEnd', 'ETag', 'Last-Modified', 'User-Agent', 'headersText'];
+    const stabilizeNames = [...TestRunner.stabilizeNames, 'wallTime', 'requestTime', 'responseTime', 'Date', 'receiveHeadersStart', 'receiveHeadersEnd', 'sendStart', 'sendEnd', 'ETag', 'Last-Modified', 'User-Agent', 'headersText'];
     let {requestIds, events} = result;
     for(let i=0; i<requestIds.length; ++i) {
       testRunner.log(`Message ${i}`);
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/timeline/auction-worklet-network.js b/third_party/blink/web_tests/http/tests/inspector-protocol/timeline/auction-worklet-network.js
index a725f13..b0162008 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/timeline/auction-worklet-network.js
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/timeline/auction-worklet-network.js
@@ -89,6 +89,7 @@
         validateRelativeMs(data.timing, 'connectStart');
         validateRelativeMs(data.timing, 'dnsEnd');
         validateRelativeMs(data.timing, 'dnsStart');
+        validateRelativeMs(data.timing, 'receiveHeadersStart');
         validateRelativeMs(data.timing, 'receiveHeadersEnd');
         validateRelativeMs(data.timing, 'sendEnd');
         validateRelativeMs(data.timing, 'sendStart');
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/network-requests-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/network-requests-expected.txt
index a5bff5f..464ccfe 100644
--- a/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/network-requests-expected.txt
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/tracing/network-requests-expected.txt
@@ -57,6 +57,7 @@
 				pushEnd: number
 				pushStart: number
 				receiveHeadersEnd: number
+				receiveHeadersStart: number
 				requestTime: number
 				sendEnd: number
 				sendStart: number
diff --git a/third_party/blink/web_tests/media/video-source-none-supported.html b/third_party/blink/web_tests/media/video-source-none-supported.html
index 4b5e65a..d43487680 100644
--- a/third_party/blink/web_tests/media/video-source-none-supported.html
+++ b/third_party/blink/web_tests/media/video-source-none-supported.html
@@ -15,16 +15,15 @@
     var sourceList = document.querySelectorAll("source");
     for (var source of sourceList) {
         source.onerror = t.step_func(function(event) {
-            // Because the error event is fired asynchronously the network state
-            // can be either NETWORK_LOADING or NETWORK_NO_SOURCE, depending on
-            // whether or not any pending "source" element is available.
-            assert_greater_than(video.networkState, HTMLMediaElement.NETWORK_IDLE);
-            if (++errorCount == 3) {
-                // Allow time for asynchronous event processing.
-                setTimeout(_ => {
-                    assert_equals(video.networkState, HTMLMediaElement.NETWORK_NO_SOURCE);
-                    t.done();
-                }, 0);
+            errorCount++;
+            if (errorCount < 3) {
+                // Because the error event is fired asynchronously the network state
+                // can be either NETWORK_LOADING or NETWORK_NO_SOURCE, depending on
+                // whether or not any pending "source" element is available.
+                assert_greater_than(video.networkState, HTMLMediaElement.NETWORK_IDLE);
+            } else {
+                assert_equals(video.networkState, HTMLMediaElement.NETWORK_NO_SOURCE);
+                t.done();
             }
         });
     }
diff --git a/third_party/eigen3/README.chromium b/third_party/eigen3/README.chromium
index 4634a14..8d77468 100644
--- a/third_party/eigen3/README.chromium
+++ b/third_party/eigen3/README.chromium
@@ -1,8 +1,8 @@
 Name: Eigen
 Short Name: eigen3
 URL: http://eigen.tuxfamily.org/
-Version: 2709f4c8fbbe71a5383de1ba27e9833f218a642d
-Date: 2023/05/11
+Version: c18f94e3b017104284cd541e553472e62e85e526
+Date: 2023/05/23
 License: MPL 2
 License File: LICENSE
 Security Critical: Yes
diff --git a/third_party/ruy/README.chromium b/third_party/ruy/README.chromium
index 5c08a57..5487d08b1 100644
--- a/third_party/ruy/README.chromium
+++ b/third_party/ruy/README.chromium
@@ -1,8 +1,8 @@
 Name: The ruy matrix multiplication library
 Short Name: ruy
 URL: https://github.com/google/ruy
-Version: c19139f55a94493086561288b243eaeec9d58353
-Date: 2023/05/11
+Version: 72d107f88082aeca462ffbe91b3a3b0e02686a73
+Date: 2023/05/23
 License: Apache 2
 License File: LICENSE
 Security Critical: Yes
diff --git a/third_party/tflite/README.chromium b/third_party/tflite/README.chromium
index 1ea988d..f86da07 100644
--- a/third_party/tflite/README.chromium
+++ b/third_party/tflite/README.chromium
@@ -1,8 +1,8 @@
 Name: TensorFlow Lite
 Short Name: tflite
 URL: https://github.com/tensorflow/tensorflow
-Version: ce9330a360c4a91df22799131f5c4fd45e5f223e
-Date: 2023/05/22
+Version: be1a33f1566b40bd43ecfc53dbd8c3dfbc7f2aa1
+Date: 2023/05/23
 License: Apache 2.0
 License File: LICENSE
 Security Critical: Yes
diff --git a/tools/code_coverage/coverage.py b/tools/code_coverage/coverage.py
index 0f481786..15b4e88 100755
--- a/tools/code_coverage/coverage.py
+++ b/tools/code_coverage/coverage.py
@@ -1135,7 +1135,7 @@
     # An input prof-data file(s) is already provided.
     if len(args.profdata_file) == 1:
       # If it's just one input file, use as-is.
-      profdata_file_path = args.profdata_file
+      profdata_file_path = args.profdata_file[0]
     else:
       # Otherwise, there are multiple profdata files and we need to merge them.
       profdata_file_path = _CreateCoverageProfileDataFromTargetProfDataFiles(args.profdata_file)
diff --git a/tools/grit/grit/format/gen_predetermined_ids.py b/tools/grit/grit/format/gen_predetermined_ids.py
index ba8a20c..da2e4af 100755
--- a/tools/grit/grit/format/gen_predetermined_ids.py
+++ b/tools/grit/grit/format/gen_predetermined_ids.py
@@ -107,7 +107,8 @@
   original_resources = {}
   for root, dirnames, filenames in os.walk(out_dir + '/gen'):
     for filename in filenames:
-      if filename.endswith(('_resources.h', '_settings.h', '_strings.h')):
+      if filename.endswith(
+          ('_resources.h', '_settings.h', '_strings.h', '_synonyms.h')):
         with open(os.path.join(root, filename)) as f:
           ReadResourceIdsFromFile(f, original_resources)
   return original_resources
diff --git a/tools/grit/grit/node/misc.py b/tools/grit/grit/node/misc.py
index 617c1a8..4740a50 100644
--- a/tools/grit/grit/node/misc.py
+++ b/tools/grit/grit/node/misc.py
@@ -240,8 +240,8 @@
               'avoid conflicts with system-defined resource IDs.')
 
       if tid not in predetermined_tids and id in predetermined_ids:
-        raise exception.IdRangeOverlap('ID %d overlaps between %s and %s'
-                                       % (id, tid, predetermined_ids[tid]))
+        raise exception.IdRangeOverlap('ID %d overlaps between %s and %s' %
+                                       (id, tid, predetermined_ids[id]))
 
       ids[id] = tid
       tids[tid] = id
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
index bd7c56d..99f8fb6 100644
--- a/tools/gritsettings/resource_ids.spec
+++ b/tools/gritsettings/resource_ids.spec
@@ -29,8 +29,6 @@
   "SRCDIR": "../..",
 
   # START chrome/app section.
-  # Previous versions of this file started with resource id 400, so stick with
-  # that.
   #
   # chrome/ and ios/chrome/ must start at the same id.
   # App only use one file depending on whether it is iOS or other platform.
@@ -38,10 +36,10 @@
   # We only use one file depending on whether we're building Chromium or
   # Google Chrome.
   "chrome/app/chromium_strings.grd": {
-    "messages": [400],
+    "messages": [800],
   },
   "chrome/app/google_chrome_strings.grd": {
-    "messages": [400],
+    "messages": [800],
   },
 
   # Leave lots of space for generated_resources since it has most of our
@@ -49,13 +47,13 @@
   "chrome/app/generated_resources.grd": {
     # Big alignment since strings (previous item) are frequently added.
     "META": {"join": 2, "align": 200},
-    "messages": [600],
+    "messages": [1000],
   },
 
   "chrome/app/resources/locale_settings.grd": {
     # Big alignment since strings (previous item) are frequently added.
     "META": {"align": 1000},
-    "messages": [1000],
+    "messages": [2000],
   },
 
   # These each start with the same resource id because we only use one
@@ -63,29 +61,29 @@
   "chrome/app/resources/locale_settings_chromiumos.grd": {
     # Big alignment since strings (previous item) are frequently added.
     "META": {"align": 100},
-    "messages": [1100],
+    "messages": [2100],
   },
   "chrome/app/resources/locale_settings_google_chromeos.grd": {
-    "messages": [1100],
+    "messages": [2100],
   },
   "chrome/app/resources/locale_settings_linux.grd": {
-    "messages": [1100],
+    "messages": [2100],
   },
   "chrome/app/resources/locale_settings_mac.grd": {
-    "messages": [1100],
+    "messages": [2100],
   },
   "chrome/app/resources/locale_settings_win.grd": {
-    "messages": [1100],
+    "messages": [2100],
   },
 
   "chrome/app/theme/chrome_unscaled_resources.grd": {
     "META": {"join": 5},
-    "includes": [1120],
+    "includes": [2120],
   },
 
   # Leave space for theme_resources since it has many structures.
   "chrome/app/theme/theme_resources.grd": {
-    "structures": [1140],
+    "structures": [2140],
   },
   # END chrome/app section.
 
@@ -93,493 +91,493 @@
   "chrome/browser/dev_ui_browser_resources.grd": {
     # Big alignment at start of section.
     "META": {"align": 100},
-    "includes": [1200],
+    "includes": [2200],
   },
   "chrome/browser/browser_resources.grd": {
-    "includes": [1220],
-    "structures": [1240],
+    "includes": [2220],
+    "structures": [2240],
   },
   "chrome/browser/recent_tabs/internal/android/java/strings/android_restore_tabs_strings.grd": {
-    "messages": [1250],
+    "messages": [2260],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/feedback/resources.grd": {
     "META": {"sizes": {"includes": [30],}},
-    "includes": [1260],
+    "includes": [2280],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/feed_internals/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1270],
+    "includes": [2300],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/app_service_internals/resources.grd": {
     "META": {"sizes": {"includes": [5],}},
-    "includes": [1280],
+    "includes": [2320],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/bookmarks/resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [1300],
+    "includes": [2340],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/browser_switch/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1320],
+    "includes": [2360],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/arc_account_picker/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1330],
+    "includes": [2380],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/assistant_optin/assistant_optin_resources.grd": {
     "META": {"sizes": {"includes": [80]}},
-    "includes": [1340],
+    "includes": [2400],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/cloud_upload/resources.grd": {
     "META": {"sizes": {"includes": [50]}},
-    "includes": [1345],
+    "includes": [2420],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/desk_api/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1347],
+    "includes": [2440],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/gaia_action_buttons/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1350],
+    "includes": [2460],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/emoji_picker/resources.grd": {
     "META": {"sizes": {"includes": [50]}},
-    "includes": [1360],
+    "includes": [2480],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/kerberos/resources.grd": {
     "META": {"sizes": {"includes": [5],}},
-    "includes": [1370],
+    "includes": [2500],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/launcher_internals/resources.grd": {
     "META": {"sizes": {"includes": [50]}},
-    "includes": [1380],
+    "includes": [2520],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/remote_maintenance_curtain/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1381],
+    "includes": [2540],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/supervision/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1383],
+    "includes": [2560],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/profile_internals/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1385],
+    "includes": [2580],
   },
   "chrome/browser/resources/app_icon/app_icon_resources.grd": {
-    "structures": [1390],
+    "structures": [2600],
   },
   "chrome/browser/resources/chromeos/app_icon/app_icon_resources.grd": {
-    "structures": [1395],
+    "structures": [2620],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/login/oobe_conditional_resources.grd": {
     "META": {"sizes": {"includes": [150], "structures": [300]}},
-    "includes": [1400],
-    "structures": [1420],
+    "includes": [2640],
+    "structures": [2660],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/lock_screen_reauth/resources.grd": {
     "META": {"sizes": {"includes": [30]}},
-    "includes": [1430],
+    "includes": [2680],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/login/oobe_unconditional_resources.grd": {
     "META": {"sizes": {"includes": [350]}},
-    "includes": [1440],
+    "includes": [2700],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/multidevice_internals/resources.grd": {
     "META": {"sizes": {"includes": [35]}},
-    "includes": [1460],
+    "includes": [2720],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1480],
+    "includes": [2740],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/notification_tester/resources.grd": {
     "META": {"sizes": {"includes": [5]}},
-    "includes": [1490],
+    "includes": [2760],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/password_change/resources.grd": {
     "META": {"sizes": {"includes": [30]}},
-    "includes": [1495],
+    "includes": [2780],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/vc_tray_tester/resources.grd": {
     "META": {"sizes": {"includes": [5]}},
-    "includes": [1497],
+    "includes": [2800],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/commander/resources.grd": {
     "META": {"sizes": {"includes": [15]}},
-    "includes": [1500],
+    "includes": [2820],
   },
   "chrome/browser/resources/component_extension_resources.grd": {
-    "includes": [1520],
-    "structures": [1540],
+    "includes": [2840],
+    "structures": [2860],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/access_code_cast/resources.grd": {
     "META": {"sizes": {"includes": [50]}},
-    "includes": [1560],
+    "includes": [2880],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/connectors_internals/resources.grd": {
     "META": {"sizes": {"includes": [15]}},
-    "includes": [1580],
+    "includes": [2900],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/discards/resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [1585],
+    "includes": [2920],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/downloads/resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [1590],
+    "includes": [2940],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/extensions/resources.grd": {
     "META": {"sizes": {"includes": [90],}},
-    "includes": [1600],
+    "includes": [2960],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/history/resources.grd": {
     "META": {"sizes": {"includes": [40]}},
-    "includes": [1620],
+    "includes": [2980],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/identity_internals/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1621],
+    "includes": [3000],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/internals/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [1640],
+    "includes": [3020],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/intro/resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [1650],
+    "includes": [3040],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/management/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1660],
+    "includes": [3060],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/new_tab_page_instant/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1680],
+    "includes": [3080],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/nearby_internals/nearby_internals_resources.grd": {
     "META": {"sizes": {"includes": [40]}},
-    "includes": [1740],
+    "includes": [3100],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/nearby_share/resources.grd": {
     "META": {"sizes": {"includes": [100]}},
-    "includes": [1760],
+    "includes": [3120],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/media_router/cast_feedback/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1780],
+    "includes": [3140],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/new_tab_page/resources.grd": {
     "META": {"sizes": {"includes": [200]}},
-    "includes": [1800],
+    "includes": [3160],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/new_tab_page_third_party/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1820],
+    "includes": [3180],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/ntp4/apps_resources.grd": {
     "META": {"sizes": {"includes": [40]}},
-    "includes": [1840],
+    "includes": [3200],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/omnibox_popup/resources.grd": {
     "META": {"sizes": {"includes": [50]}},
-    "includes": [1845],
+    "includes": [3220],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/password_manager/resources.grd": {
     "META": {"sizes": {"includes": [100]}},
-    "includes": [1850],
+    "includes": [3240],
   },
   "chrome/browser/resources/preinstalled_web_apps/resources.grd": {
-    "includes": [1860],
+    "includes": [3260],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/pdf/resources.grd": {
     "META": {"sizes": {"includes": [200]}},
-    "includes": [1880],
+    "includes": [3280],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/print_preview/resources.grd": {
     "META": {"sizes": {"includes": [500],}},
-    "includes": [1900],
+    "includes": [3300],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/privacy_sandbox/resources.grd": {
     "META": {"sizes": {"includes": [30],}},
-    "includes": [1910],
+    "includes": [3320],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/segmentation_internals/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [1925],
+    "includes": [3340],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/bookmarks/resources.grd": {
     "META": {"sizes": {"includes": [45],}},
-    "includes": [1926],
+    "includes": [3360],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/companion/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1927],
+    "includes": [3380],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/customize_chrome/resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [1930],
+    "includes": [3400],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/history_clusters/resources.grd": {
     "META": {"sizes": {"includes": [5],}},
-    "includes": [1931],
+    "includes": [3420],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/read_anything/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1932],
+    "includes": [3440],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/reading_list/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [1933],
+    "includes": [3460],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/shared/resources.grd": {
     "META": {"sizes": {"includes": [15],}},
-    "includes": [1934],
+    "includes": [3480],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/side_panel/user_notes/resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [1935],
+    "includes": [3500],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/settings/chromeos/resources.grd": {
     "META": {"sizes": {"includes": [1000],}},
-    "includes": [1940],
+    "includes": [3520],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/settings/resources.grd": {
     "META": {"sizes": {"includes": [500],}},
-    "includes": [1960],
+    "includes": [3540],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/settings_shared/resources.grd": {
     "META": {"sizes": {"includes": [30],}},
-    "includes": [1970],
+    "includes": [3560],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/signin/profile_picker/resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [1980],
+    "includes": [3580],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/signin/resources.grd": {
     "META": {"sizes": {"includes": [60],}},
-    "includes": [2000],
+    "includes": [3600],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/support_tool/resources.grd": {
     "META": {"sizes": {"includes": [30]}},
-    "includes": [2010],
+    "includes": [3620],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/tab_search/resources.grd": {
     "META": {"sizes": {"includes": [30]}},
-    "includes": [2020],
+    "includes": [3640],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/tab_strip/resources.grd": {
     "META": {"sizes": {"includes": [30]}},
-    "includes": [2040],
+    "includes": [3660],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/welcome/resources.grd": {
     "META": {"sizes": {"includes": [60]}},
-    "includes": [2060],
+    "includes": [3680],
   },
   "chrome/browser/test_dummy/internal/android/resources/resources.grd": {
-    "includes": [2100],
+    "includes": [3700],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/webui_gallery/resources.grd": {
     "META": {"sizes": {"includes": [70]}},
-    "includes": [2130],
+    "includes": [3720],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/web_app_internals/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2135],
+    "includes": [3740],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/whats_new/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2140],
+    "includes": [3760],
   },
   # END chrome/browser section.
 
   # START chrome/ WebUI resources section
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/browsing_topics/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2170],
+    "includes": [3780],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/bluetooth_internals/resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [2180],
+    "includes": [3800],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/audio/resources.grd": {
     "META": {"sizes": {"includes": [30]}},
-    "includes": [2200],
+    "includes": [3820],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog_resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2220],
+    "includes": [3840],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/chromebox_for_meetings/resources.grd": {
     "META": {"sizes": {"includes": [5]}},
-    "includes": [2240],
+    "includes": [3860],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/healthd_internals/resources.grd": {
     "META": {"sizes": {"includes": [50]}},
-    "includes": [2250],
+    "includes": [3880],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog_resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2260],
+    "includes": [3900],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/internet_detail_dialog/internet_detail_dialog_resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2280],
+    "includes": [3920],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/network_ui/network_ui_resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2300],
+    "includes": [3940],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/commerce/core/internals/resources/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2305],
+    "includes": [3960],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/history_clusters/history_clusters_internals/resources/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2310],
+    "includes": [3980],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/download/resources/download_internals/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2320],
+    "includes": [4000],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/optimization_guide/optimization_guide_internals/resources/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2330],
+    "includes": [4020],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/policy/resources/webui/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2335],
+    "includes": [4040],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/app_home/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2340],
+    "includes": [4060],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/gaia_auth_host/resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [2350],
+    "includes": [4080],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/invalidations/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2360],
+    "includes": [4100],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/media/resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [2380],
+    "includes": [4120],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/net_internals/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2400],
+    "includes": [4140],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/omnibox/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2420],
+    "includes": [4160],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/suggest_internals/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2430],
+    "includes": [4180],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/quota_internals/quota_internals_resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2440],
+    "includes": [4200],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/sync_file_system_internals/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2460],
+    "includes": [4220],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/usb_internals/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2480],
+    "includes": [4240],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/webapks/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2500],
+    "includes": [4260],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/webui_js_error/resources.grd": {
    "META": {"sizes": {"includes": [10],}},
-   "includes": [2520],
+   "includes": [4280],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/app_settings/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2530],
+    "includes": [4300],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/sync/service/resources/resources.grd": {
    "META": {"sizes": {"includes": [30],}},
-    "includes": [2540],
+    "includes": [4320],
   },
   "components/resources/dev_ui_components_resources.grd": {
-    "includes": [2560],
+    "includes": [4340],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/aggregation_service/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2563],
+    "includes": [4360],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/attribution_reporting/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2565],
+    "includes": [4380],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/gpu/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2566],
+    "includes": [4400],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/histograms/resources.grd": {
     "META": {"sizes": {"includes": [5]}},
-    "includes": [2568],
+    "includes": [4420],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/indexed_db/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2570],
+    "includes": [4440],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/media/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2580],
+    "includes": [4460],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/net/resources.grd": {
     "META": {"sizes": {"includes": [5],}},
-    "includes": [2583],
+    "includes": [4480],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/process/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2585],
+    "includes": [4500],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/service_worker/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2588],
+    "includes": [4520],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/resources/quota/resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2590],
+    "includes": [4540],
   },
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/webrtc/resources/resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [2600],
+    "includes": [4560],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/feed/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2640],
+    "includes": [4580],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/manage_mirrorsync/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2650],
+    "includes": [4600],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/inline_login/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2655],
+    "includes": [4620],
   },
   "<(SHARED_INTERMEDIATE_DIR)/components/metrics/debug/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2665],
+    "includes": [4640],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/lens/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2675],
+    "includes": [4660],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/lens/untrusted_resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [2685],
+    "includes": [4680],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/chromeos/enterprise_reporting/resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [2695],
+    "includes": [4700],
   },
   # END chrome/ WebUI resources section
 
@@ -587,23 +585,23 @@
   "chrome/common/common_resources.grd": {
     # Big alignment at start of section.
     "META": {"align": 100},
-    "includes": [2700],
+    "includes": [4800],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/common/chromeos/extensions/chromeos_system_extensions_resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [2720],
+    "includes": [4820],
   },
   "chrome/credential_provider/gaiacp/gaia_resources.grd": {
-    "includes": [2740],
-    "messages": [2760],
+    "includes": [4840],
+    "messages": [4860],
   },
   "chrome/renderer/resources/renderer_resources.grd": {
-    "includes": [2780],
-    "structures": [2800],
+    "includes": [4880],
+    "structures": [4900],
   },
   "<(SHARED_INTERMEDIATE_DIR)/chrome/test/data/webui/resources.grd": {
     "META": {"sizes": {"includes": [1500],}},
-    "includes": [2810],
+    "includes": [4920],
   },
   # END chrome/ miscellaneous section.
 
@@ -611,60 +609,60 @@
   "chromeos/chromeos_strings.grd": {
     # Big alignment at start of section.
     "META": {"align": 100},
-    "messages": [2900],
+    "messages": [5000],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/ambient/resources/lottie_resources.grd": {
     "META": {"sizes": {"includes": [100],}},
-    "includes": [2910],
+    "includes": [5020],
   },
   "chromeos/ash/resources/ash_resources.grd": {
-    "includes": [2915],
+    "includes": [5040],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/camera_app_ui/ash_camera_app_resources.grd": {
     "META": {"sizes": {"includes": [300],}},
-    "includes": [2920],
+    "includes": [5060],
   },
   "ash/webui/camera_app_ui/resources/strings/camera_strings.grd": {
-    "messages": [2940],
+    "messages": [5080],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/color_internals/resources/ash_color_internals_resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [2950],
+    "includes": [5100],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/common/resources/office_fallback/resources.grd": {
     "META": {"sizes": {"includes": [5]}},
-    "includes": [2955],
+    "includes": [5120],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/connectivity_diagnostics/resources/connectivity_diagnostics_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [2960],
+    "includes": [5140],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/diagnostics_ui/resources/ash_diagnostics_app_resources.grd": {
     "META": {"sizes": {"includes": [200],}},
-    "includes": [2980],
+    "includes": [5160],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/file_manager/resources/file_manager_swa_resources.grd": {
     "META": {"sizes": {"includes": [100]}},
-    "includes": [3000],
+    "includes": [5180],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/file_manager/untrusted_resources/file_manager_untrusted_resources.grd": {
     "META": {"sizes": {"includes": [20]}},
-    "includes": [3020],
+    "includes": [5200],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/files_internals/ash_files_internals_resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [3025],
+    "includes": [5220],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/guest_os_installer/resources/resources.grd": {
     "META": {"sizes": {"includes": [10]}},
-    "includes": [3030],
+    "includes": [5240],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/common/resources/resources.grd": {
     "META": {"sizes": {"includes": [700]}},
-    "includes": [3035],
+    "includes": [5260],
   },
   "ash/webui/help_app_ui/resources/help_app_resources.grd": {
-    "includes": [3040],
+    "includes": [5280],
   },
   # Both help_app_kids_magazine_bundle_resources.grd and
   # help_app_kids_magazine_bundle_mock_resources.grd start with the same id
@@ -673,10 +671,10 @@
   # in this case (HTML, JS and CSS file).
   "ash/webui/help_app_ui/resources/prod/help_app_kids_magazine_bundle_resources.grd": {
     "META": {"sizes": {"includes": [15],}},
-    "includes": [3060],
+    "includes": [5300],
   },
   "ash/webui/help_app_ui/resources/mock/help_app_kids_magazine_bundle_mock_resources.grd": {
-    "includes": [3060],
+    "includes": [5300],
   },
   # Both help_app_bundle_resources.grd and help_app_bundle_mock_resources.grd
   # start with the same id because only one of them is built depending on if
@@ -685,14 +683,14 @@
   # and bundled content in the top 25 languages (25 x 2).
   "ash/webui/help_app_ui/resources/prod/help_app_bundle_resources.grd": {
     "META": {"sizes": {"includes": [300],}},  # Relies on src-internal.
-    "includes": [3080],
+    "includes": [5320],
   },
   "ash/webui/help_app_ui/resources/mock/help_app_bundle_mock_resources.grd": {
-    "includes": [3080],
+    "includes": [5320],
   },
   "ash/webui/media_app_ui/resources/media_app_resources.grd": {
     "META": {"join": 2},
-    "includes": [3100],
+    "includes": [5340],
   },
   # Both media_app_bundle_resources.grd and media_app_bundle_mock_resources.grd
   # start with the same id because only one of them is built depending on if
@@ -700,77 +698,77 @@
   # of languages (74).
   "ash/webui/media_app_ui/resources/prod/media_app_bundle_resources.grd": {
     "META": {"sizes": {"includes": [130],}},  # Relies on src-internal.
-    "includes": [3120],
+    "includes": [5360],
   },
   "ash/webui/media_app_ui/resources/mock/media_app_bundle_mock_resources.grd": {
-    "includes": [3120],
+    "includes": [5360],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/print_management/resources/resources.grd": {
     "META": {"join": 2, "sizes": {"includes": [20]}},
-    "includes": [3140],
+    "includes": [5380],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/sample_system_web_app_ui/resources/trusted/ash_sample_system_web_app_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3180],
+    "includes": [5400],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/sample_system_web_app_ui/resources/untrusted/ash_sample_system_web_app_untrusted_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3200],
+    "includes": [5420],
   },
   "ash/webui/scanning/resources/scanning_app_resources.grd": {
-    "includes": [3220],
-    "structures": [3240],
+    "includes": [5440],
+    "structures": [5460],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/system_extensions_internals_ui/ash_system_extensions_internals_resources.grd": {
     "META": {"sizes": {"includes": [10],}},
-    "includes": [3260],
+    "includes": [5480],
   },
   "chromeos/resources/chromeos_resources.grd": {
-    "includes": [3280],
+    "includes": [5500],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/eche_app_ui/ash_eche_app_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3300],
+    "includes": [5520],
   },
   # Both ash_eche_bundle_resources.grd and ash_eche_bundle_mock_resources.grd
   # start with the same id because only one of them is built depending on if
   # src_internal is available.
   "ash/webui/eche_app_ui/resources/prod/ash_eche_bundle_resources.grd": {
     "META": {"sizes": {"includes": [120],}},
-    "includes": [3320],
+    "includes": [5540],
   },
   "ash/webui/eche_app_ui/resources/mock/ash_eche_bundle_mock_resources.grd": {
     "META": {"sizes": {"includes": [120],}},
-    "includes": [3320],
+    "includes": [5540],
   },
   "ash/webui/multidevice_debug/resources/multidevice_debug_resources.grd": {
     "META": {"join": 2},
-    "includes": [3330],
+    "includes": [5560],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/personalization_app/resources/resources.grd": {
     "META": {"sizes": {"includes": [200],}},
-    "includes": [3340],
+    "includes": [5580],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/demo_mode_app_ui/ash_demo_mode_app_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-   "includes": [3360],
+   "includes": [5600],
   },
 
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/projector_app/resources/app/trusted/ash_projector_app_trusted_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3380],
+    "includes": [5620],
   },
  "<(SHARED_INTERMEDIATE_DIR)/ash/webui/projector_app/resources/app/untrusted/ash_projector_app_untrusted_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3395],
+    "includes": [5640],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/projector_app/resources/annotator/untrusted/ash_projector_annotator_untrusted_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3405],
+    "includes": [5660],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/projector_app/resources/common/ash_projector_common_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3415],
+    "includes": [5680],
   },
 
   # Both projector_app_bundle_resources.grd and projector_app_bundle_mock_resources.grd
@@ -779,28 +777,28 @@
   # of languages (79).
   "ash/webui/projector_app/resources/prod/projector_app_bundle_resources.grd": {
     "META": {"sizes": {"includes": [120],}}, # Relies on src-internal.
-    "includes": [3420],
+    "includes": [5700],
   },
   "ash/webui/projector_app/resources/mock/projector_app_bundle_mock_resources.grd": {
-    "includes": [3420],
+    "includes": [5700],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/face_ml_app_ui/resources/trusted/ash_face_ml_app_resources.grd": {
     "META": {"join": 2, "sizes": {"includes": [50],}},
-    "includes": [3440],
+    "includes": [5720],
   },
   # Both face_ml_app_bundle_resources.grd and face_ml_app_bundle_mock_resources.grd
   # start with the same id because only one of them is built depending on if
   # src_internal is available.
   "ash/webui/face_ml_app_ui/resources/prod/face_ml_app_bundle_resources.grd": {
     "META": {"sizes": {"includes": [120],}},  # Relies on src-internal.
-    "includes": [3460],
+    "includes": [5740],
   },
   "ash/webui/face_ml_app_ui/resources/mock/face_ml_app_bundle_mock_resources.grd": {
-    "includes": [3460],
+    "includes": [5740],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/face_ml_app_ui/resources/untrusted/ash_face_ml_app_untrusted_resources.grd": {
     "META": {"join": 2, "sizes": {"includes": [50],}},
-    "includes": [3480],
+    "includes": [5760],
   },
   # END chromeos/ section.
 
@@ -810,52 +808,52 @@
   "ash/components/arc/input_overlay/resources/input_overlay_resources.grd": {
     # Big alignment at start of section.
     "META": {"align": 1000},
-    "includes": [3500],
+    "includes": [6000],
   },
   # Chromium strings and Google Chrome strings must start at the same id.
   # We only use one file depending on whether we're building Chromium or
   # Google Chrome.
   "components/components_chromium_strings.grd": {
-    "messages": [3520],
+    "messages": [6020],
   },
   "components/components_google_chrome_strings.grd": {
-    "messages": [3520],
+    "messages": [6020],
   },
   "components/components_locale_settings.grd": {
     "META": {"join": 2},
-    "includes": [3540],
-    "messages": [3560],
+    "includes": [6040],
+    "messages": [6060],
   },
   "components/components_strings.grd": {
-    "messages": [3580],
+    "messages": [6080],
   },
   "components/headless/command_handler/headless_command.grd": {
-    "includes": [3590],
+    "includes": [6100],
   },
   "components/omnibox/resources/omnibox_pedal_synonyms.grd": {
-    "messages": [3600],
+    "messages": [6120],
   },
   # components/policy/resources/policy_templates.grd and
   # components/policy/resources/policy_templates.build.grd must share the same
   # id because they are based on the same structure, however they are used in
   # different pipelines.
   "components/policy/resources/policy_templates.grd": {
-    "structures": [3640],
+    "structures": [6140],
   },
   "components/policy/resources/policy_templates.build.grd": {
-    "structures": [3640],
+    "structures": [6140],
   },
   "components/resources/components_resources.grd": {
-    "includes": [3660],
+    "includes": [6160],
   },
   "components/resources/components_scaled_resources.grd": {
-    "structures": [3680],
+    "structures": [6180],
   },
   "components/embedder_support/android/java/strings/web_contents_delegate_android_strings.grd": {
-    "messages": [3700],
+    "messages": [6200],
   },
   "components/autofill/core/browser/autofill_address_rewriter_resources.grd":{
-    "includes": [3720]
+    "includes": [6220]
   },
   # END components/ section.
 
@@ -864,8 +862,8 @@
   # chrome/ and ios/chrome/ must start at the same id.
   # App only use one file depending on whether it is iOS or other platform.
   "ios/chrome/app/resources/ios_resources.grd": {
-    "includes": [400],
-    "structures": [420],
+    "includes": [800],
+    "structures": [820],
   },
 
   # Chromium strings and Google Chrome strings must start at the same id.
@@ -874,69 +872,69 @@
   "ios/chrome/app/strings/ios_chromium_strings.grd": {
     # Big alignment to make start IDs look nicer.
     "META": {"align": 100},
-    "messages": [500],
+    "messages": [900],
   },
   "ios/chrome/app/strings/ios_google_chrome_strings.grd": {
-    "messages": [500],
+    "messages": [900],
   },
 
   "ios/chrome/app/strings/ios_strings.grd": {
     # Big alignment since strings (previous item) are frequently added.
     "META": {"join": 2, "align": 200},
-    "messages": [600],
+    "messages": [1000],
   },
   "ios/chrome/app/theme/ios_theme_resources.grd": {
     # Big alignment since strings (previous item) are frequently added.
     "META": {"align": 100},
-    "structures": [700],
+    "structures": [1100],
   },
   "ios/chrome/share_extension/strings/ios_share_extension_strings.grd": {
-    "messages": [720],
+    "messages": [1120],
   },
   "ios/chrome/search_widget_extension/strings/ios_search_widget_extension_strings.grd": {
-    "messages": [740],
+    "messages": [1140],
   },
   "ios/chrome/search_widget_extension/strings/ios_search_widget_extension_chromium_strings.grd": {
-    "messages": [760],
+    "messages": [1160],
   },
   "ios/chrome/search_widget_extension/strings/ios_search_widget_extension_google_chrome_strings.grd": {
-    "messages": [760],
+    "messages": [1160],
   },
   "ios/chrome/content_widget_extension/strings/ios_content_widget_extension_chromium_strings.grd": {
     "META": {"join": 2},
-    "messages": [780],
+    "messages": [1180],
   },
   "ios/chrome/content_widget_extension/strings/ios_content_widget_extension_google_chrome_strings.grd": {
-    "messages": [780],
+    "messages": [1180],
   },
   "ios/chrome/credential_provider_extension/strings/ios_credential_provider_extension_strings.grd": {
     "META": {"join": 2},
-    "messages": [800],
+    "messages": [1200],
   },
   "ios/chrome/widget_kit_extension/strings/ios_widget_kit_extension_strings.grd": {
-    "messages": [820],
+    "messages": [1220],
   },
   "ios/web/ios_web_resources.grd": {
-    "includes": [825],
+    "includes": [1240],
   },
   "ios/web/test/test_resources.grd": {
-    "includes": [830],
+    "includes": [1260],
   },
   # END ios/ section.
 
   # START ios_internal/ section.
   "ios_internal/chrome/app/ios_internal_strings.grd": {
-    "messages": [840],
+    "messages": [1280],
   },
   "ios_internal/chrome/app/theme/mobile_theme_resources.grd": {
-    "structures": [860],
+    "structures": [1300],
   },
   "ios_internal/chrome/app/ios_internal_chromium_strings.grd": {
     "META": {"join": 2},
-    "messages": [3740],
+    "messages": [6240],
   },
   "ios_internal/chrome/app/ios_internal_google_chrome_strings.grd": {
-    "messages": [3740],
+    "messages": [6240],
   },
   # END ios_internal/ section.
 
@@ -944,19 +942,19 @@
   "content/content_resources.grd": {
     # Big alignment at start of section.
     "META": {"join": 2, "align": 100},
-    "includes": [3800],
+    "includes": [6300],
   },
   "content/shell/shell_resources.grd": {
-    "includes": [3820],
+    "includes": [6320],
   },
   "content/test/web_ui_mojo_test_resources.grd": {
-    "includes": [3840],
+    "includes": [6340],
   },
 
   # This file is generated during the build.
   "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd": {
     "META": {"sizes": {"includes": [20],}},
-    "includes": [3860],
+    "includes": [6360],
   },
   # END content/ section.
 
@@ -965,167 +963,167 @@
   "ash/ash_strings.grd": {
     # Big alignment at start of section.
     "META": {"align": 100},
-    "messages": [3960],
+    "messages": [6400],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/os_feedback_ui/resources/ash_os_feedback_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3980],
+    "includes": [6420],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/os_feedback_ui/untrusted_resources/ash_os_feedback_untrusted_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [3982],
+    "includes": [6440],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/firmware_update_ui/resources/ash_firmware_update_app_resources.grd": {
     "META": {"sizes": {"includes": [200],}},
-    "includes": [3990],
+    "includes": [6460],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/shortcut_customization_ui/resources/ash_shortcut_customization_app_resources.grd": {
     "META": {"sizes": {"includes": [200],}},
-    "includes": [4000],
+    "includes": [6480],
   },
   "ash/shortcut_viewer/shortcut_viewer_strings.grd": {
-    "messages": [4020],
+    "messages": [6500],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ash/webui/shimless_rma/resources/ash_shimless_rma_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [4040],
+    "includes": [6520],
   },
   "ash/keyboard/ui/keyboard_resources.grd": {
-    "includes": [4060],
+    "includes": [6540],
   },
   "ash/login/resources/login_resources.grd": {
-    "structures": [4080],
+    "structures": [6560],
   },
   "ash/public/cpp/resources/ash_public_unscaled_resources.grd": {
-    "includes": [4100],
-    "structures": [4101],
+    "includes": [6580],
+    "structures": [6600],
   },
   "base/tracing/protos/resources.grd": {
-    "includes": [4120],
+    "includes": [6620],
   },
   "chromecast/app/resources/chromecast_settings.grd": {
-    "messages": [4140],
+    "messages": [6640],
   },
   "chromecast/app/resources/shell_resources.grd": {
-    "includes": [4160],
+    "includes": [6660],
   },
   "chromecast/renderer/resources/extensions_renderer_resources.grd": {
-    "includes": [4180],
+    "includes": [6680],
   },
 
   "device/bluetooth/bluetooth_strings.grd": {
-    "messages": [4240],
+    "messages": [6700],
   },
 
   "device/fido/fido_strings.grd": {
-    "messages": [4260],
+    "messages": [6720],
   },
 
   "extensions/browser/resources/extensions_browser_resources.grd": {
-    "structures": [4280],
+    "structures": [6740],
   },
   "extensions/extensions_resources.grd": {
-    "includes": [4300],
+    "includes": [6760],
   },
   "extensions/renderer/resources/extensions_renderer_resources.grd": {
-    "includes": [4320],
-    "structures": [4340],
+    "includes": [6780],
+    "structures": [6800],
   },
   "extensions/shell/app_shell_resources.grd": {
-    "includes": [4360],
+    "includes": [6820],
   },
   "extensions/strings/extensions_strings.grd": {
-    "messages": [4380],
+    "messages": [6840],
   },
 
   "mojo/public/js/mojo_bindings_resources.grd": {
-    "includes": [4420],
+    "includes": [6860],
   },
 
   "net/base/net_resources.grd": {
-    "includes": [4440],
+    "includes": [6880],
   },
 
   "remoting/resources/remoting_strings.grd": {
-    "messages": [4460],
+    "messages": [6900],
   },
 
   "services/services_strings.grd": {
-    "messages": [4480],
+    "messages": [6920],
   },
   "skia/skia_resources.grd": {
-    "includes": [4500],
+    "includes": [6940],
   },
   "third_party/blink/public/blink_image_resources.grd": {
-    "structures": [4520],
+    "structures": [6960],
   },
   "third_party/blink/public/blink_resources.grd": {
-    "includes": [4540],
+    "includes": [6980],
   },
   "third_party/blink/renderer/modules/media_controls/resources/media_controls_resources.grd": {
-    "includes": [4560],
-    "structures": [4580],
+    "includes": [7000],
+    "structures": [7020],
   },
   "third_party/blink/public/strings/blink_accessibility_strings.grd": {
-    "messages": [4600],
+    "messages": [7040],
   },
   "third_party/blink/public/strings/blink_strings.grd": {
-    "messages": [4610],
+    "messages": [7060],
   },
   "third_party/libaddressinput/chromium/address_input_strings.grd": {
-    "messages": [4620],
+    "messages": [7080],
   },
 
   "ui/base/test/ui_base_test_resources.grd": {
-    "messages": [4640],
+    "messages": [7100],
   },
   "ui/chromeos/resources/ui_chromeos_resources.grd": {
-    "structures": [4660],
+    "structures": [7120],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ui/chromeos/styles/cros_typography_resources.grd": {
     "META": {"sizes": {"includes": [5],}},
-    "includes": [4678],
+    "includes": [7140],
   },
   "ui/chromeos/ui_chromeos_strings.grd": {
-    "messages": [4680],
+    "messages": [7160],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ui/file_manager/file_manager_gen_resources.grd": {
     "META": {"sizes": {"includes": [2000]}},
-    "includes": [4700],
+    "includes": [7180],
   },
   "ui/file_manager/file_manager_resources.grd": {
-    "includes": [4720],
+    "includes": [7200],
   },
   "ui/resources/ui_resources.grd": {
-    "structures": [4740],
+    "structures": [7220],
   },
   "ui/resources/ui_unscaled_resources.grd": {
-    "includes": [4760],
+    "includes": [7240],
   },
   "ui/strings/app_locale_settings.grd": {
-    "messages": [4780],
+    "messages": [7260],
   },
   "ui/strings/ax_strings.grd": {
-    "messages": [4800],
+    "messages": [7280],
   },
   "ui/strings/ui_strings.grd": {
-    "messages": [4810],
+    "messages": [7300],
   },
   "ui/views/examples/views_examples_resources.grd": {
-    "messages": [4820],
+    "messages": [7320],
   },
   "ui/views/resources/views_resources.grd": {
-    "structures": [4840],
+    "structures": [7340],
   },
   "ui/webui/examples/resources/webui_examples_resources.grd": {
-    "messages": [4850],
+    "messages": [7360],
   },
   "<(SHARED_INTERMEDIATE_DIR)/ui/webui/resources/webui_resources.grd": {
     "META": {"sizes": {"includes": [1100]}},
-    "includes": [4900],
+    "includes": [7380],
   },
   "weblayer/weblayer_resources.grd": {
-    "includes": [4920],
+    "includes": [7400],
   },
 
   # This file is generated during the build.
@@ -1134,13 +1132,13 @@
     # In debug build, devtools frontend sources are not bundled and therefore
     # includes a lot of individual resources
     "META": {"sizes": {"includes": [2500],}},
-    "includes": [4940],
+    "includes": [7420],
   },
 
   # This file is generated during the build.
   "<(SHARED_INTERMEDIATE_DIR)/resources/inspector_overlay/inspector_overlay_resources.grd": {
     "META": {"sizes": {"includes": [50],}},
-    "includes": [4960],
+    "includes": [7440],
   },
 
   # END "everything else" section.
diff --git a/tools/json_schema_compiler/cc_generator.py b/tools/json_schema_compiler/cc_generator.py
index 02c7e48..484226a 100644
--- a/tools/json_schema_compiler/cc_generator.py
+++ b/tools/json_schema_compiler/cc_generator.py
@@ -243,13 +243,15 @@
             .Append('out.%(name)s.emplace();')
             .Append('out.%(name)s->reserve(%(name)s->size());')
             .Sblock('for (const auto& element : *%(name)s) {')
-              .Append('out.%(name)s->push_back(element.Clone());')
+              .Append(self._util_cc_helper.AppendToContainer(
+                '*out.%(name)s', 'element.Clone()'))
             .Eblock('}')
           .Eblock('}'))
       else:
         (c.Append('out.%(name)s.reserve(%(name)s.size());')
           .Sblock('for (const auto& element : %(name)s) {')
-            .Append('out.%(name)s.push_back(element.Clone());')
+            .Append(self._util_cc_helper.AppendToContainer(
+              'out.%(name)s', 'element.Clone()'))
           .Eblock('}'))
     elif (underlying_type.property_type == PropertyType.OBJECT or
           underlying_type.property_type == PropertyType.ANY or
@@ -955,7 +957,11 @@
     elif underlying_type.property_type == PropertyType.ARRAY:
       if is_ptr:
         var = '*%s' % var
-      return '%s' % self._util_cc_helper.CreateValueFromArray(var)
+      underlying_item_cpp_type = self._type_helper.GetCppType(underlying_type.item_type)
+      if underlying_item_cpp_type != 'base::Value':
+        return '%s' % self._util_cc_helper.CreateValueFromArray(var)
+      else:
+        return '(%s).Clone()' % var
     elif (underlying_type.property_type.is_fundamental or
               underlying_type.is_serializable_function):
       if is_ptr:
@@ -1200,18 +1206,22 @@
           c.Append('std::u16string array_parse_error;')
           args.append('array_parse_error')
 
-        c.Append('if (!%s(%s)) {' % (
-            self._util_cc_helper.PopulateArrayFromListFunction(is_ptr),
-            self._GenerateArgs(args, generate_error_messages=False)))
-        c.Sblock()
-        if self._generate_error_messages:
-          c.Append(
-            'array_parse_error = u"Error at key \'%(key)s\': " + '
-            'array_parse_error;'
-          )
-          c.Concat(self._AppendError16('array_parse_error'))
-        c.Append('return %(failure_value)s;')
-        c.Eblock('}')
+        item_cpp_type = self._type_helper.GetCppType(item_type)
+        if item_cpp_type != 'base::Value':
+          c.Append('if (!%s(%s)) {' % (
+              self._util_cc_helper.PopulateArrayFromListFunction(is_ptr),
+              self._GenerateArgs(args, generate_error_messages=False)))
+          c.Sblock()
+          if self._generate_error_messages:
+            c.Append(
+              'array_parse_error = u"Error at key \'%(key)s\': " + '
+              'array_parse_error;'
+            )
+            c.Concat(self._AppendError16('array_parse_error'))
+          c.Append('return %(failure_value)s;')
+          c.Eblock('}')
+        else:
+          c.Append('%(dst_var)s = %(src_var)s.GetList().Clone();')
       c.Eblock('}')
     elif underlying_type.property_type == PropertyType.CHOICES:
       if is_ptr:
diff --git a/tools/json_schema_compiler/cpp_type_generator.py b/tools/json_schema_compiler/cpp_type_generator.py
index 78d847e..6f021a71 100644
--- a/tools/json_schema_compiler/cpp_type_generator.py
+++ b/tools/json_schema_compiler/cpp_type_generator.py
@@ -204,7 +204,10 @@
         cpp_type = 'base::Value::Dict'
     elif type_.property_type == PropertyType.ARRAY:
       item_cpp_type = self.GetCppType(type_.item_type)
-      cpp_type = 'std::vector<%s>' % item_cpp_type
+      if item_cpp_type == 'base::Value':
+        cpp_type = 'base::Value::List'
+      else:
+        cpp_type = 'std::vector<%s>' % item_cpp_type
     elif type_.property_type == PropertyType.BINARY:
       cpp_type = 'std::vector<uint8_t>'
     else:
diff --git a/tools/json_schema_compiler/h_generator.py b/tools/json_schema_compiler/h_generator.py
index b4ed92d..051b6c6b 100644
--- a/tools/json_schema_compiler/h_generator.py
+++ b/tools/json_schema_compiler/h_generator.py
@@ -222,15 +222,19 @@
         c.Comment(type_.description)
       c.Cblock(self._GenerateType(type_.item_type, is_toplevel=is_toplevel))
       if generate_typedefs:
-        (c.Append('typedef std::vector<%s > %s;' % (
-                       self._type_helper.GetCppType(type_.item_type),
-                       classname))
-        )
+        item_cpp_type = self._type_helper.GetCppType(type_.item_type)
+        if item_cpp_type != 'base::Value':
+          (c.Append('using %s = std::vector<%s >;' % (
+                        classname,
+                        item_cpp_type))
+          )
+        else:
+          c.Append('using %s = base::Value::List;' % classname)
     elif type_.property_type == PropertyType.STRING:
       if generate_typedefs:
         if type_.description:
           c.Comment(type_.description)
-        c.Append('typedef std::string %(classname)s;')
+        c.Append('using %(classname)s = std::string;')
     elif type_.property_type == PropertyType.ENUM:
       if type_.description:
         c.Comment(type_.description)
diff --git a/tools/json_schema_compiler/util.h b/tools/json_schema_compiler/util.h
index 154add2..4816936 100644
--- a/tools/json_schema_compiler/util.h
+++ b/tools/json_schema_compiler/util.h
@@ -155,31 +155,27 @@
   out.Append(from.ToValue());
 }
 
-// Set |out| to the the contents of |from|. Requires PopulateItem to be
+// Returns a list matching the contents of |from|. Requires PopulateItem to be
 // implemented for |T|.
 template <class T>
-void PopulateListFromArray(const std::vector<T>& from, base::Value::List& out) {
-  out.clear();
-  for (const T& item : from)
-    AddItemToList(item, out);
-}
-
-// Set |out| to the the contents of |from| if |from| is not null. Requires
-// PopulateItem to be implemented for |T|.
-template <class T>
-void PopulateListFromOptionalArray(const std::unique_ptr<std::vector<T>>& from,
-                                   base::Value::List& out) {
-  if (from)
-    PopulateListFromArray(*from, out);
-}
-
-template <class T>
 base::Value::List CreateValueFromArray(const std::vector<T>& from) {
   base::Value::List list;
-  PopulateListFromArray(from, list);
+  for (const T& item : from) {
+    AddItemToList(item, list);
+  }
   return list;
 }
 
+template <class T>
+void AppendToContainer(base::Value::List& container, T&& value) {
+  container.Append(std::forward<T>(value));
+}
+
+template <class C, class T>
+void AppendToContainer(std::vector<C>& container, T&& value) {
+  container.emplace_back(std::forward<T>(value));
+}
+
 }  // namespace util
 }  // namespace json_schema_compiler
 
diff --git a/tools/json_schema_compiler/util_cc_helper.py b/tools/json_schema_compiler/util_cc_helper.py
index fb99b2f..181f4d4d 100644
--- a/tools/json_schema_compiler/util_cc_helper.py
+++ b/tools/json_schema_compiler/util_cc_helper.py
@@ -26,6 +26,12 @@
     """
     return '%s::CreateValueFromArray(%s)' % (_API_UTIL_NAMESPACE, src)
 
+  def AppendToContainer(self, container, value):
+    """Appends |value| to |container|.
+    """
+    return '%s::AppendToContainer(%s, %s);' % (
+      _API_UTIL_NAMESPACE, container, value)
+
   def GetIncludePath(self):
     return '#include "tools/json_schema_compiler/util.h"'
 
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index cac00af..fc506da 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -32921,6 +32921,7 @@
   <int value="1107" label="GoogleSearchSidePanelEnabled"/>
   <int value="1108" label="PdfUseSkiaRendererEnabled"/>
   <int value="1109" label="DataUrlInSvgUseEnabled"/>
+  <int value="1110" label="RSAKeyUsageForLocalAnchorsEnabled"/>
 </enum>
 
 <enum name="EnterprisePoliciesSources">
@@ -42573,6 +42574,7 @@
   <int value="4573" label="V8InvalidatedNumberStringNotRegexpLikeProtector"/>
   <int value="4574" label="CriticalCHRestartNavigationTiming"/>
   <int value="4575" label="TopLevelDocumentWithEmbeddedCredentials"/>
+  <int value="4576" label="V8Navigator_GetInterestGroupAdAuctionData_Method"/>
 </enum>
 
 <enum name="FeaturePolicyAllowlistType">
@@ -114673,6 +114675,7 @@
   <int value="57" label="Visited Chrome Web Store via extensions sub menu."/>
   <int value="58" label="Password Manager"/>
   <int value="59" label="Translate Page"/>
+  <int value="60" label="Show Chrome Labs"/>
 </enum>
 
 <enum name="WrongConfigurationMetric">
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml
index 0a77dfa..ea27f37 100644
--- a/tools/metrics/histograms/metadata/blink/histograms.xml
+++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -30,6 +30,7 @@
 </variants>
 
 <variants name="BlinkVisibleLoadTimeSuffixes">
+  <variant name="" summary="Aggregated across all connection types"/>
   <variant name=".2G" summary="2G effective connection type"/>
   <variant name=".3G" summary="3G effective connection type"/>
   <variant name=".4G" summary="4G effective connection type"/>
@@ -3587,7 +3588,7 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold2"
+<histogram name="Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold3"
     enum="NQEEffectiveConnectionType" expires_after="2023-11-12">
   <owner>pdr@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
@@ -3597,7 +3598,7 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold2"
+<histogram name="Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold3"
     enum="NQEEffectiveConnectionType" expires_after="2023-11-05">
   <owner>pdr@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
index c57db17..3665b9c 100644
--- a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
+++ b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
@@ -541,30 +541,6 @@
   </summary>
 </histogram>
 
-<histogram name="Tutorial.FocusToggleCount.Aborted" units="times"
-    expires_after="2022-12-31">
-  <owner>dpenning@chromium.org</owner>
-  <owner>dfried@chromium.org</owner>
-  <summary>
-    Records the number of times the user toggles focus to the help bubble using
-    the keyboard during a tutorial that the user aborts or fails. Can be
-    cross-referenced with screen reader state to determine if screen reader or
-    non-screen-reader users are using the keyboard to navigate.
-  </summary>
-</histogram>
-
-<histogram name="Tutorial.FocusToggleCount.Completed" units="times"
-    expires_after="2022-12-31">
-  <owner>dpenning@chromium.org</owner>
-  <owner>dfried@chromium.org</owner>
-  <summary>
-    Records the number of times the user toggles focus to the help bubble using
-    the keyboard during a tutorial that the user completes. Can be
-    cross-referenced with screen reader state to determine if screen reader or
-    non-screen-reader users are using the keyboard to navigate.
-  </summary>
-</histogram>
-
 <histogram name="Tutorial.TabGroup.EditedTitle" enum="BooleanSuccess"
     expires_after="2023-09-24">
   <owner>dpenning@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
index 38a426a2..5c5b17f 100644
--- a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
@@ -6030,6 +6030,7 @@
   <suffix name="Settings" label=""/>
   <suffix name="ShowBookmarkBar" label=""/>
   <suffix name="ShowBookmarkMgr" label=""/>
+  <suffix name="ShowChromeLabs" label=""/>
   <suffix name="ShowDownloads" label=""/>
   <suffix name="ShowHistory" label=""/>
   <suffix name="ShowKaleidoscope" label=""/>
diff --git a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
index e5794c22..8165607 100644
--- a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
+++ b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
@@ -720,6 +720,45 @@
   </summary>
 </histogram>
 
+<histogram name="SegmentationPlatform.SyncSessions.TabsCountAtFirstSyncUpdate"
+    units="tabs" expires_after="2023-10-01">
+  <owner>ritikagup@google.com</owner>
+  <owner>chrome-segmentation-platform@google.com</owner>
+  <summary>
+    Records the number of tabs that are opened and synced till the first sync
+    session update.
+
+    Recorded once, only if there is sync session update for the first time.
+  </summary>
+</histogram>
+
+<histogram
+    name="SegmentationPlatform.SyncSessions.TimeFromStartupToFirstSyncUpdate"
+    units="ms" expires_after="2023-10-01">
+  <owner>ritikagup@google.com</owner>
+  <owner>chrome-segmentation-platform@google.com</owner>
+  <summary>
+    The time taken from chrome startup to the time first sync session update is
+    received. This includes the network delay for receiving the sync session
+    updates. The metric is recorded once after chrome startup if sync is enabled
+    and sync session is updated for the first time.
+  </summary>
+</histogram>
+
+<histogram
+    name="SegmentationPlatform.SyncSessions.TimeFromTabLoadedToSyncUpdate"
+    units="ms" expires_after="2023-10-01">
+  <owner>ritikagup@google.com</owner>
+  <owner>chrome-segmentation-platform@google.com</owner>
+  <summary>
+    After chrome startup anytime if a tab is loaded, the time taken from tab
+    load time to the time next immediate sync session update is received. This
+    includes the network delay for receiving the sync session updates. The
+    metric is recorded everytime a tab is loaded and a sync session update is
+    recieved after it.
+  </summary>
+</histogram>
+
 <histogram
     name="SegmentationPlatform.TrainingDataCollectionEvents.{SegmentationModel}"
     enum="SegmentationPlatformTrainingDataCollectionEvent"
diff --git a/tools/metrics/histograms/metadata/structured_metrics/histograms.xml b/tools/metrics/histograms/metadata/structured_metrics/histograms.xml
index eaf6623..2c2f1cc9 100644
--- a/tools/metrics/histograms/metadata/structured_metrics/histograms.xml
+++ b/tools/metrics/histograms/metadata/structured_metrics/histograms.xml
@@ -23,6 +23,44 @@
   </summary>
 </histogram>
 
+<histogram name="StructuredMetrics.LogStore.CompressionRatio" units="%"
+    expires_after="2023-07-31">
+  <owner>andrewbregger@google.com</owner>
+  <owner>jongahn@google.com</owner>
+  <owner>chromeos-data-eng@google.com</owner>
+  <owner>chrome-metrics-team@google.com</owner>
+  <summary>
+    The compression ratio of Structured Metrics logs. Recorded when logs are
+    stored.
+  </summary>
+</histogram>
+
+<histogram name="StructuredMetrics.LogStore.Dropped" units="logs"
+    expires_after="2023-07-31">
+  <owner>andrewbregger@google.com</owner>
+  <owner>jongahn@google.com</owner>
+  <owner>chromeos-data-eng@google.com</owner>
+  <owner>chrome-metrics-team@google.com</owner>
+  <summary>
+    The number of logs dropped for exceeding the log size constraints. Recorded
+    when trimming the logs is complete and when the remaining logs is less then
+    the original logs.
+  </summary>
+</histogram>
+
+<histogram name="StructuredMetrics.LogStore.DroppedSize" units="KB"
+    expires_after="2023-07-31">
+  <owner>andrewbregger@google.com</owner>
+  <owner>jongahn@google.com</owner>
+  <owner>chromeos-data-eng@google.com</owner>
+  <owner>chrome-metrics-team@google.com</owner>
+  <summary>
+    The size in KB of logs trimmed by log storage for being too large. Recorded
+    when trimming the log and the compressed size of a log exceeds the max log
+    size.
+  </summary>
+</histogram>
+
 <histogram name="StructuredMetrics.Reporting.ActualUploadInterval"
     units="minutes" expires_after="2023-07-31">
   <owner>andrewbregger@google.com</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index c23b2e2..8b58f70 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,16 +5,16 @@
             "full_remote_path": "perfetto-luci-artifacts/v34.0/linux-arm64/trace_processor_shell"
         },
         "win": {
-            "hash": "3918d79c0de038900b2c30e386136a00e519e0a9",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/9d82cb852512318a848e2050551eb305bf0872ac/trace_processor_shell.exe"
+            "hash": "2755b8a2529155c021489066dc5545dd04703e1c",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/86ba039eec4889624d5c44a4ebf19b18d8df91cc/trace_processor_shell.exe"
         },
         "linux_arm": {
             "hash": "336a42cb9ec3c417e13a97816271fec10cdf67e5",
             "full_remote_path": "perfetto-luci-artifacts/v34.0/linux-arm/trace_processor_shell"
         },
         "mac": {
-            "hash": "fc7c372cbbe5cde63d5d13a9eefbb5668262eca5",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/313bfe34b8a790700c4550439d70b71fa665613e/trace_processor_shell"
+            "hash": "03ad7f27cbcd7c584f3e73cbc094c5562769654e",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/ab5c58d254d434ec35022ff5c8dfa437ff34ac6d/trace_processor_shell"
         },
         "mac_arm64": {
             "hash": "c32364e05e22cdf82ee0866aedd11c0e2050809c",
@@ -22,7 +22,7 @@
         },
         "linux": {
             "hash": "02b7b3c80951e4fda942d49484f36880cfeb2648",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/313bfe34b8a790700c4550439d70b71fa665613e/trace_processor_shell"
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/ab5c58d254d434ec35022ff5c8dfa437ff34ac6d/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index f435d4c..a69bd07 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -220,7 +220,6 @@
  <item id="sigined_exchange_cert_fetcher" added_in_milestone="66" content_hash_code="007c2dac" os_list="linux,windows,chromeos,android" file_path="content/browser/web_package/signed_exchange_cert_fetcher.cc" />
  <item id="signed_in_profile_avatar" added_in_milestone="62" content_hash_code="071dd1bf" os_list="linux,windows,chromeos,android" file_path="chrome/browser/profiles/profile_downloader.cc" />
  <item id="socket_bio_adapter" added_in_milestone="66" content_hash_code="014a4058" os_list="linux,windows,chromeos,android" file_path="net/socket/socket_bio_adapter.cc" />
- <item id="spdy_push_stream" added_in_milestone="67" content_hash_code="042048b5" os_list="linux,windows,chromeos,android" file_path="net/spdy/spdy_session.cc" />
  <item id="spdy_session_control" added_in_milestone="66" content_hash_code="01c6f3f0" os_list="linux,windows,chromeos,android" file_path="net/spdy/spdy_session.cc" />
  <item id="speech_recognition_downstream" added_in_milestone="62" content_hash_code="07323e31" os_list="linux,windows,chromeos" file_path="content/browser/speech/speech_recognition_engine.cc" />
  <item id="speech_recognition_upstream" added_in_milestone="62" content_hash_code="0075966b" os_list="linux,windows,chromeos" file_path="content/browser/speech/speech_recognition_engine.cc" />
diff --git a/tools/traffic_annotation/summary/grouping.xml b/tools/traffic_annotation/summary/grouping.xml
index 3f864ed..eb32823 100644
--- a/tools/traffic_annotation/summary/grouping.xml
+++ b/tools/traffic_annotation/summary/grouping.xml
@@ -206,7 +206,6 @@
       <annotation id="reporting"/>
       <annotation id="socket_bio_adapter"/>
       <annotation id="spdy_session_control"/>
-      <annotation id="spdy_push_stream"/>
       <annotation id="websocket_basic_stream"/>
       <annotation id="websocket_stream"/>
       <annotation id="notification_client"/>
diff --git a/ui/accessibility/accessibility_features.cc b/ui/accessibility/accessibility_features.cc
index ba0ab7f..022d78b1 100644
--- a/ui/accessibility/accessibility_features.cc
+++ b/ui/accessibility/accessibility_features.cc
@@ -291,11 +291,6 @@
              ::features::kEmergencyDisableScreenAIMainContentExtraction);
 }
 
-bool IsScreenAIServiceNeeded() {
-  return IsPdfOcrEnabled() || IsLayoutExtractionEnabled() ||
-         IsReadAnythingWithScreen2xEnabled();
-}
-
 // This feature is only for debug purposes and for security/privacy reasons,
 // should be never enabled by default .
 BASE_FEATURE(kScreenAIDebugMode,
diff --git a/ui/accessibility/accessibility_features.h b/ui/accessibility/accessibility_features.h
index e3431bd..9a2e3ba 100644
--- a/ui/accessibility/accessibility_features.h
+++ b/ui/accessibility/accessibility_features.h
@@ -224,10 +224,6 @@
 // distills web pages using an ML model.
 AX_BASE_EXPORT bool IsReadAnythingWithScreen2xEnabled();
 
-// Returns true if Screen AI Service is needed as any of the features relying on
-// it are enabled.
-AX_BASE_EXPORT bool IsScreenAIServiceNeeded();
-
 // If enabled, ScreenAI library writes some debug data in /tmp.
 AX_BASE_EXPORT bool IsScreenAIDebugModeEnabled();
 
diff --git a/ui/accessibility/platform/ax_platform_node_textprovider_win.cc b/ui/accessibility/platform/ax_platform_node_textprovider_win.cc
index 3098db1..39f3568 100644
--- a/ui/accessibility/platform/ax_platform_node_textprovider_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_textprovider_win.cc
@@ -95,17 +95,22 @@
     std::swap(start, end);
   }
 
+  // Per [1], AddRef is called from SafeArrayPutElement when the data element is a VT_DISPATCH
+  // or VT_UNKNOWN. Since `text_range_provider` is a VT_UNKNOWN, we must not increment the
+  // object's reference count upon creation to avoid leaking it.
+  //
+  // [1]:https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-safearrayputelement
   Microsoft::WRL::ComPtr<ITextRangeProvider> text_range_provider =
       AXPlatformNodeTextRangeProviderWin::CreateTextRangeProvider(
-          std::move(start), std::move(end));
+          std::move(start), std::move(end), /* add_ref */ false);
   if (&text_range_provider == nullptr)
     return E_OUTOFMEMORY;
 
   // Since we don't support disjoint text ranges, the SAFEARRAY returned
   // will always have one element
   base::win::ScopedSafearray selections_to_return(
-      SafeArrayCreateVector(VT_UNKNOWN /* element type */, 0 /* lower bound */,
-                            1 /* number of elements */));
+      SafeArrayCreateVector(/* element type */ VT_UNKNOWN, /* lower bound */ 0,
+                            /* number of elements */ 1));
 
   if (!selections_to_return.Get())
     return E_OUTOFMEMORY;
@@ -116,7 +121,7 @@
   DCHECK(SUCCEEDED(hr));
 
   // Since DCHECK only happens in debug builds, return immediately to ensure
-  // that we're not leaking the SAFEARRAY on release builds
+  // that we're not leaking the SAFEARRAY on release builds.
   if (FAILED(hr))
     return E_FAIL;
 
@@ -173,9 +178,14 @@
     // the container bounds, so we check if the bounding rects intersect rather
     // than if it is only contained within.
     if (frame_rect.Intersects(current_rect)) {
+      // Per [1], AddRef is called from SafeArrayPutElement when the data element is a
+      // VT_DISPATCH or VT_UNKNOWN. Since `text_range_provider` is a VT_UNKNOWN, we must not
+      // increment the object's reference count upon creation to avoid leaking it.
+      //
+      // [1]:https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-safearrayputelement
       Microsoft::WRL::ComPtr<ITextRangeProvider> text_range_provider =
           AXPlatformNodeTextRangeProviderWin::CreateTextRangeProvider(
-              current_line_start->Clone(), current_line_end->Clone());
+              current_line_start->Clone(), current_line_end->Clone(), /* add_ref */ false);
 
       ranges.emplace_back(text_range_provider);
     }
@@ -186,8 +196,8 @@
   }
 
   base::win::ScopedSafearray scoped_visible_ranges(
-      SafeArrayCreateVector(VT_UNKNOWN /* element type */, 0 /* lower bound */,
-                            ranges.size() /* number of elements */));
+      SafeArrayCreateVector(/* element type */ VT_UNKNOWN, /* lower bound */ 0,
+                            /* number of elements */ ranges.size()));
 
   if (!scoped_visible_ranges.Get())
     return E_OUTOFMEMORY;
@@ -199,7 +209,7 @@
     DCHECK(SUCCEEDED(hr));
 
     // Since DCHECK only happens in debug builds, return immediately to ensure
-    // that we're not leaking the SAFEARRAY on release builds
+    // that we're not leaking the SAFEARRAY on release builds.
     if (FAILED(hr))
       return E_FAIL;
 
diff --git a/ui/accessibility/platform/ax_platform_node_textprovider_win_unittest.cc b/ui/accessibility/platform/ax_platform_node_textprovider_win_unittest.cc
index a38be10..2a4eef6f 100644
--- a/ui/accessibility/platform/ax_platform_node_textprovider_win_unittest.cc
+++ b/ui/accessibility/platform/ax_platform_node_textprovider_win_unittest.cc
@@ -673,6 +673,50 @@
             text_edit_provider->GetSelection(selections.Receive()));
 }
 
+TEST_F(AXPlatformNodeTextProviderTest, ITextRangeProviderGetSelectionRefCount) {
+  TestAXTreeUpdate update(std::string(R"HTML(
+    ++1 kRootWebArea name="Document"
+    ++++2 kStaticText name="hello"
+  )HTML"));
+
+  Init(update);
+
+  ComPtr<IRawElementProviderSimple> root_node =
+      GetRootIRawElementProviderSimple();
+
+  ComPtr<ITextProvider> root_text_provider;
+  EXPECT_HRESULT_SUCCEEDED(
+      root_node->GetPatternProvider(UIA_TextPatternId, &root_text_provider));
+
+  ComPtr<AXPlatformNodeTextProviderWin> root_platform_node;
+  root_text_provider->QueryInterface(IID_PPV_ARGS(&root_platform_node));
+
+  AXPlatformNodeWin* owner = GetOwner(root_platform_node.Get());
+  AXTreeData& selected_tree_data =
+      const_cast<AXTreeData&>(owner->GetDelegate()->GetTreeData());
+  selected_tree_data.sel_focus_object_id = 2;
+  selected_tree_data.sel_anchor_object_id = 2;
+  selected_tree_data.sel_anchor_offset = 0;
+  selected_tree_data.sel_focus_offset = 5;
+
+  base::win::ScopedSafearray selections;
+  root_text_provider->GetSelection(selections.Receive());
+  ASSERT_NE(nullptr, selections.Get());
+
+  LONG index = 0;
+  ComPtr<ITextRangeProvider> text_range_provider;
+  EXPECT_HRESULT_SUCCEEDED(SafeArrayGetElement(
+      selections.Get(), &index, static_cast<void**>(&text_range_provider)));
+
+  // Validate that there was only one reference to the `text_range_provider`.
+  ASSERT_EQ(1U, text_range_provider->Release());
+
+  // This is needed to avoid calling SafeArrayDestroy from SafeArray's dtor when
+  // exiting the scope, which would crash trying to release the already
+  // destroyed `text_range_provider`.
+  selections.Release();
+}
+
 TEST_F(AXPlatformNodeTextProviderTest,
        TestRemoveTextInvalidatingPositionForComparison) {
   TestAXTreeUpdate initial_state(std::string(R"HTML(
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
index 9cacc6ea..b12d5706 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
@@ -101,14 +101,19 @@
 
 ITextRangeProvider* AXPlatformNodeTextRangeProviderWin::CreateTextRangeProvider(
     AXPositionInstance start,
-    AXPositionInstance end) {
+    AXPositionInstance end,
+    bool add_ref) {
   CComObject<AXPlatformNodeTextRangeProviderWin>* text_range_provider = nullptr;
   if (SUCCEEDED(CComObject<AXPlatformNodeTextRangeProviderWin>::CreateInstance(
           &text_range_provider))) {
     DCHECK(text_range_provider);
     text_range_provider->SetStart(std::move(start));
     text_range_provider->SetEnd(std::move(end));
-    text_range_provider->AddRef();
+    if (add_ref) {
+      // Some callers will be in situations where they pass the `ITextRangeProvider` into a
+      // method that automatically calls `AddRef`. Adding another here would lead to a leak.
+      text_range_provider->AddRef();
+    }
     return text_range_provider;
   }
 
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h
index 3bae814..4f4c6759 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h
@@ -34,7 +34,8 @@
   // Creates an instance of the class.
   static ITextRangeProvider* CreateTextRangeProvider(
       AXNodePosition::AXPositionInstance start,
-      AXNodePosition::AXPositionInstance end);
+      AXNodePosition::AXPositionInstance end,
+      bool add_ref = true);
 
   // Creates an instance of the class for unit tests, where AXPlatformNodes
   // cannot be queried automatically from endpoints.
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_fuzzer.cc b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_fuzzer.cc
index 199fb3c..336cb8ae 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_fuzzer.cc
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_fuzzer.cc
@@ -17,7 +17,6 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/win/atl.h"
 #include "base/win/scoped_bstr.h"
-#include "base/win/scoped_safearray.h"
 #include "base/win/scoped_variant.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node.h"
diff --git a/ui/events/ash/event_rewriter_ash.cc b/ui/events/ash/event_rewriter_ash.cc
index cb3a96de..5a3ebfb 100644
--- a/ui/events/ash/event_rewriter_ash.cc
+++ b/ui/events/ash/event_rewriter_ash.cc
@@ -1785,12 +1785,15 @@
       if (matched_mask == kSearchLeftButton) {
         base::RecordAction(
             base::UserMetricsAction("SearchClickMappedToRightClick"));
+        delegate_->RecordEventRemappedToRightClick(
+            /*alt_based_right_click=*/false);
       } else {
         DCHECK(matched_mask == kAltLeftButton);
         base::RecordAction(
             base::UserMetricsAction("AltClickMappedToRightClick"));
+        delegate_->RecordEventRemappedToRightClick(
+            /*alt_based_right_click=*/true);
       }
-      delegate_->RecordEventRemappedToRightClick();
     } else {
       pressed_as_right_button_device_ids_.erase(mouse_event.source_device_id());
     }
diff --git a/ui/events/ash/event_rewriter_ash.h b/ui/events/ash/event_rewriter_ash.h
index 05be55e7..7f3a5eb 100644
--- a/ui/events/ash/event_rewriter_ash.h
+++ b/ui/events/ash/event_rewriter_ash.h
@@ -136,7 +136,8 @@
     // Used to record when either Alt+Click or Search+Click is remapped to a
     // right click event. The `kEventRemappedToRightClick` pref will be used
     // to determine the default behavior for simulating a right click.
-    virtual void RecordEventRemappedToRightClick() = 0;
+    virtual void RecordEventRemappedToRightClick(
+        bool alt_based_right_click) = 0;
 
     // Used to record Alt/Search based key event rewrites for Six Pack keys.
     // `alt_based` tells us whether this "six pack" event was produced by an
diff --git a/ui/events/ash/keyboard_capability.cc b/ui/events/ash/keyboard_capability.cc
index bc4f90b2..3fc8bc5 100644
--- a/ui/events/ash/keyboard_capability.cc
+++ b/ui/events/ash/keyboard_capability.cc
@@ -103,6 +103,7 @@
         {VKEY_ALL_APPLICATIONS, TopRowActionKey::kAllApplications},
         {VKEY_EMOJI_PICKER, TopRowActionKey::kEmojiPicker},
         {VKEY_DICTATE, TopRowActionKey::kDictation},
+        {VKEY_PRIVACY_SCREEN_TOGGLE, TopRowActionKey::kPrivacyScreenToggle},
     });
 
 // Some ChromeOS compatible keyboards have a capslock key.
@@ -828,6 +829,10 @@
   keyboard_info_map_.insert_or_assign(keyboard.id, std::move(keyboard_info));
 }
 
+void KeyboardCapability::DisableKeyboardInfoTrimmingForTesting() {
+  should_disable_trimming_ = true;
+}
+
 const KeyboardCapability::KeyboardInfo* KeyboardCapability::GetKeyboardInfo(
     const KeyboardDevice& keyboard) const {
   auto iter = keyboard_info_map_.find(keyboard.id);
@@ -961,8 +966,7 @@
 
 bool KeyboardCapability::HasPrivacyScreenKey(
     const KeyboardDevice& keyboard) const {
-  return GetTopRowLayout(keyboard) ==
-             KeyboardTopRowLayout::kKbdTopRowLayoutDrallion &&
+  return GetDeviceType(keyboard) == DeviceType::kDeviceInternalKeyboard &&
          delegate_->IsPrivacyScreenSupported();
 }
 
@@ -976,6 +980,16 @@
   return false;
 }
 
+const std::vector<TopRowActionKey>* KeyboardCapability::GetTopRowActionKeys(
+    const KeyboardDevice& keyboard) {
+  const auto* keyboard_info = GetKeyboardInfo(keyboard);
+  if (!keyboard_info) {
+    return nullptr;
+  }
+
+  return &keyboard_info->top_row_action_keys;
+}
+
 bool KeyboardCapability::HasAssistantKey(const KeyboardDevice& keyboard) const {
   // Some external keyboards falsely claim to have assistant keys. However, this
   // can be trusted for internal + ChromeOS external keyboards.
@@ -1010,6 +1024,12 @@
 }
 
 void KeyboardCapability::TrimKeyboardInfoMap() {
+  // When `should_disable_trimming_` is true, skip removal of removed devices
+  // from our cache of `KeyboardInfo`.
+  if (should_disable_trimming_) {
+    return;
+  }
+
   auto sorted_keyboards =
       DeviceDataManager::GetInstance()->GetKeyboardDevices();
   base::ranges::sort(sorted_keyboards, [](const ui::KeyboardDevice& device1,
diff --git a/ui/events/ash/keyboard_capability.h b/ui/events/ash/keyboard_capability.h
index ecd18dda..99f9dae 100644
--- a/ui/events/ash/keyboard_capability.h
+++ b/ui/events/ash/keyboard_capability.h
@@ -23,7 +23,7 @@
 
 namespace ui {
 
-// TODO(dpad): Handle privacy screen toggle and display mirror top row keys.
+// TODO(dpad): Handle display mirror top row keys.
 enum class TopRowActionKey {
   kNone = 0,
   kMinValue = kNone,
@@ -49,7 +49,8 @@
   kAllApplications,
   kEmojiPicker,
   kDictation,
-  kMaxValue = kDictation,
+  kPrivacyScreenToggle,
+  kMaxValue = kPrivacyScreenToggle,
 };
 
 inline constexpr auto kLayout1TopRowActionKeys =
@@ -124,6 +125,7 @@
     });
 
 // Keyboard wilco/drallion map between top row keys to function keys.
+// TODO(dpad): Handle privacy screen better on drallion devices.
 // TODO(zhangwenyu): Both F3 and F12 map to VKEY_ZOOM for wilco. Handle edge
 // case when creating the top row accelerator alias for VKEY_ZOOM key.
 inline constexpr auto kLayoutWilcoDrallionTopRowKeyToFKeyMap =
@@ -334,8 +336,11 @@
   const std::vector<uint32_t>* GetTopRowScanCodes(int device_id) const;
 
   // Takes a `KeyboardInfo` to use for testing the passed in keyboard.
-  void SetKeyboardInfoForTesting(const KeyboardDevice& keyboard,
-                                 KeyboardInfo keyboard_info);
+  void SetKeyboardInfoForTesting(const KeyboardDevice& keyboard, KeyboardInfo);
+
+  // Disables "trimming" which means the `keyboard_info_map_` will not remove
+  // entries when they are disconnected.
+  void DisableKeyboardInfoTrimmingForTesting();
 
   // InputDeviceEventObserver:
   void OnDeviceListsComplete() override;
@@ -406,6 +411,9 @@
       const KeyboardDevice& keyboard,
       KeyboardCode key_code) const;
 
+  const std::vector<TopRowActionKey>* GetTopRowActionKeys(
+      const KeyboardDevice& keyboard);
+
   const base::flat_map<int, KeyboardInfo>& keyboard_info_map() const {
     return keyboard_info_map_;
   }
@@ -423,6 +431,10 @@
   // which are effectively const.
   mutable base::flat_map<int, KeyboardInfo> keyboard_info_map_;
   std::unique_ptr<Delegate> delegate_;
+
+  // Whether or not to disable "trimming" which means the `keyboard_info_map_`
+  // will not remove entries when they are disconnected.
+  bool should_disable_trimming_ = false;
 };
 
 }  // namespace ui
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index 85b70b6..758304e7 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -432,44 +432,12 @@
     egl_window_attributes.push_back(EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE);
   }
 
-  switch (format_.GetColorSpace()) {
-    case GLSurfaceFormat::COLOR_SPACE_UNSPECIFIED:
-      break;
-    case GLSurfaceFormat::COLOR_SPACE_SRGB:
-      // Note that COLORSPACE_LINEAR refers to the sRGB color space, but
-      // without opting into sRGB blending. It is equivalent to
-      // COLORSPACE_SRGB with Disable(FRAMEBUFFER_SRGB).
-      if (display_->ext->b_EGL_KHR_gl_colorspace) {
-        egl_window_attributes.push_back(EGL_GL_COLORSPACE_KHR);
-        egl_window_attributes.push_back(EGL_GL_COLORSPACE_LINEAR_KHR);
-      }
-      break;
-    case GLSurfaceFormat::COLOR_SPACE_DISPLAY_P3:
-      // Note that it is not the case that
-      //   COLORSPACE_SRGB is to COLORSPACE_LINEAR_KHR
-      // as
-      //   COLORSPACE_DISPLAY_P3 is to COLORSPACE_DISPLAY_P3_LINEAR
-      // COLORSPACE_DISPLAY_P3 is equivalent to COLORSPACE_LINEAR, except with
-      // with the P3 gamut instead of the the sRGB gamut.
-      // COLORSPACE_DISPLAY_P3_LINEAR has a linear transfer function, and is
-      // intended for use with 16-bit formats.
-      bool p3_supported =
-          display_->ext->b_EGL_EXT_gl_colorspace_display_p3 ||
-          display_->ext->b_EGL_EXT_gl_colorspace_display_p3_passthrough;
-      if (display_->ext->b_EGL_KHR_gl_colorspace && p3_supported) {
-        egl_window_attributes.push_back(EGL_GL_COLORSPACE_KHR);
-        // Chrome relied on incorrect Android behavior when dealing with P3 /
-        // framebuffer_srgb interactions. This behavior was fixed in Q, which
-        // causes invalid Chrome rendering. To achieve Android-P behavior in Q+,
-        // use EGL_GL_COLORSPACE_P3_PASSTHROUGH_EXT where possible.
-        if (display_->ext->b_EGL_EXT_gl_colorspace_display_p3_passthrough) {
-          egl_window_attributes.push_back(
-              EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT);
-        } else {
-          egl_window_attributes.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_EXT);
-        }
-      }
-      break;
+  // Note that COLORSPACE_LINEAR refers to the sRGB color space, but
+  // without opting into sRGB blending. It is equivalent to
+  // COLORSPACE_SRGB with Disable(FRAMEBUFFER_SRGB).
+  if (display_->ext->b_EGL_KHR_gl_colorspace) {
+    egl_window_attributes.push_back(EGL_GL_COLORSPACE_KHR);
+    egl_window_attributes.push_back(EGL_GL_COLORSPACE_LINEAR_KHR);
   }
 
   egl_window_attributes.push_back(EGL_NONE);
diff --git a/ui/views/window/caption_button_layout_constants.cc b/ui/views/window/caption_button_layout_constants.cc
index 2ccd66ba..ef929ad 100644
--- a/ui/views/window/caption_button_layout_constants.cc
+++ b/ui/views/window/caption_button_layout_constants.cc
@@ -4,27 +4,14 @@
 
 #include "ui/views/window/caption_button_layout_constants.h"
 
-#include "build/chromeos_buildflags.h"
 #include "ui/base/pointer/touch_ui_controller.h"
 #include "ui/gfx/geometry/size.h"
 
-#if BUILDFLAG(IS_CHROMEOS)
-#include "chromeos/constants/chromeos_features.h"
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
 namespace views {
 
 gfx::Size GetCaptionButtonLayoutSize(CaptionButtonLayoutSize size) {
-#if BUILDFLAG(IS_CHROMEOS)
-  if (chromeos::features::IsJellyrollEnabled()) {
-    return gfx::Size(
-        36,
-        size == CaptionButtonLayoutSize::kBrowserCaptionMaximized ? 34 : 40);
-  }
-#endif  // BUILDFLAG(IS_CHROMEOS)
-
   if (size == CaptionButtonLayoutSize::kNonBrowserCaption) {
-    return gfx::Size(32, 32);
+    return gfx::Size(kCaptionButtonWidth, 32);
   }
 
   // |kBrowserMaximizedCaptionButtonHeight| should be kept in sync with those
@@ -33,11 +20,9 @@
   // location.
   int height = ui::TouchUiController::Get()->touch_ui() ? 41 : 34;
   if (size == CaptionButtonLayoutSize::kBrowserCaptionRestored) {
-    // Restored window titlebars are 8 DIP taller than maximized.
-    height += 8;
+    height += 8;  // Restored window titlebars are 8 DIP taller than maximized.
   }
-
-  return gfx::Size(32, height);
+  return gfx::Size(kCaptionButtonWidth, height);
 }
 
 }  // namespace views